summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dat/clua/dungeon.lua
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-06-27 19:42:23 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-06-27 19:42:23 +0000
commit9b41135da821d07d54c7a6ee75ed6dcbd19e9322 (patch)
treeb5151b3dd9d18dbfb50646ee91155382b22a2c59 /crawl-ref/source/dat/clua/dungeon.lua
parent6a2be1555b3d27614a7a5d3a8fd973cebc0865c8 (diff)
downloadcrawl-ref-9b41135da821d07d54c7a6ee75ed6dcbd19e9322.tar.gz
crawl-ref-9b41135da821d07d54c7a6ee75ed6dcbd19e9322.zip
Added glyphs_connected and friends for maps to test connectedness of points
after map transforms are applied. Fixed conflicts in bison grammar. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1669 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dat/clua/dungeon.lua')
-rw-r--r--crawl-ref/source/dat/clua/dungeon.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/crawl-ref/source/dat/clua/dungeon.lua b/crawl-ref/source/dat/clua/dungeon.lua
index 7fe2b30a22..d26bba984b 100644
--- a/crawl-ref/source/dat/clua/dungeon.lua
+++ b/crawl-ref/source/dat/clua/dungeon.lua
@@ -59,4 +59,46 @@ function dgn_run_map(prelude, main)
return setfenv(main, env)()
end
end
+end
+
+--------------------------------------------------------------------
+
+function dgn.places_connected(map, map_glyph, test_connect, ...)
+ local points = { }
+ for _, glyph in ipairs( { ... } ) do
+ local x, y = map_glyph(map, glyph)
+ if x and y then
+ table.insert(points, x)
+ table.insert(points, y)
+ else
+ error("Can't find coords for '" .. glyph .. "'")
+ end
+ end
+ return test_connect(map, unpack(points))
+end
+
+function dgn.glyphs_connected(map, ...)
+ return dgn.places_connected(map, dgn.gly_point, dgn.points_connected, ...)
+end
+
+function dgn.orig_glyphs_connected(map, ...)
+ return dgn.places_connected(map, dgn.orig_gly_point,
+ dgn.points_connected, ...)
+end
+
+function dgn.orig_fn(map, fnx, ...)
+ local original = dgn.original_map(map)
+ if not original then
+ error("Can't find original map for map '" .. dgn.name(map) .. "'")
+ end
+
+ return fnx(original, ...)
+end
+
+function dgn.orig_gly_point(map, glyph)
+ return dgn.orig_fn(map, dgn.gly_point, glyph)
+end
+
+function dgn.orig_gly_points(map, glyph)
+ return dgn.orig_fn(map, dgn.gly_points, glyph)
end \ No newline at end of file