diff options
author | Enne Walker <ennewalker@users.sourceforge.net> | 2009-11-16 16:34:53 -0500 |
---|---|---|
committer | Enne Walker <ennewalker@users.sourceforge.net> | 2009-11-17 12:16:45 -0500 |
commit | f1f15b7afb1a1f8f47fa84f489a13f9cd1f50fcb (patch) | |
tree | 111bef4b6166ca11bf1ff2a0a3da0f8a0b3a3481 /crawl-ref/source/l_dgn.cc | |
parent | 840bf56930dfa95308cf3aa9e77e2051868ac568 (diff) | |
download | crawl-ref-f1f15b7afb1a1f8f47fa84f489a13f9cd1f50fcb.tar.gz crawl-ref-f1f15b7afb1a1f8f47fa84f489a13f9cd1f50fcb.zip |
Fixing ziggurats missing fill_area function.
fill_grd_area now fills an area on the dungeon grd. Only Ziggurats use
this function.
Diffstat (limited to 'crawl-ref/source/l_dgn.cc')
-rw-r--r-- | crawl-ref/source/l_dgn.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/crawl-ref/source/l_dgn.cc b/crawl-ref/source/l_dgn.cc index fa32c9da4d..cef4fd1acd 100644 --- a/crawl-ref/source/l_dgn.cc +++ b/crawl-ref/source/l_dgn.cc @@ -1582,6 +1582,31 @@ LUAFN(_dgn_reuse_map) LUAWRAP(_dgn_reset_level, dgn_reset_level()) +LUAFN(dgn_fill_grd_area) +{ + int x1 = luaL_checkint(ls, 1); + int y1 = luaL_checkint(ls, 2); + int x2 = luaL_checkint(ls, 3); + int y2 = luaL_checkint(ls, 4); + dungeon_feature_type feat = check_lua_feature(ls, 5); + + x1 = std::min(std::max(x1, X_BOUND_1+1), X_BOUND_2-1); + y1 = std::min(std::max(y1, Y_BOUND_1+1), Y_BOUND_2-1); + x2 = std::min(std::max(x2, X_BOUND_1+1), X_BOUND_2-1); + y2 = std::min(std::max(y2, Y_BOUND_1+1), Y_BOUND_2-1); + + if (x2 < x1) + std::swap(x1, x2); + if (y2 < y1) + std::swap(y1, y2); + + for (int y = y1; y <= y2; y++) + for (int x = x1; x <= x2; x++) + grd[x][y] = feat; + + return (0); +} + const struct luaL_reg dgn_dlib[] = { { "reset_level", _dgn_reset_level }, @@ -1669,5 +1694,7 @@ const struct luaL_reg dgn_dlib[] = { "get_special_room_info", dgn_get_special_room_info }, +{ "fill_grd_area", dgn_fill_grd_area }, + { NULL, NULL } }; |