From 4fe67e14cab6affd2a69a864dda356440d50e0ca Mon Sep 17 00:00:00 2001 From: Enne Walker Date: Sat, 28 Nov 2009 18:06:49 -0500 Subject: Subvaults. Vaults can now include other vaults as a part of their definition. These subvaults are currently included by tag only and replace glyphs in their parent vault. See documentation for more details. Vault:8 has been modified to use subvaults. --- crawl-ref/source/l_subvault.cc | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 crawl-ref/source/l_subvault.cc (limited to 'crawl-ref/source/l_subvault.cc') diff --git a/crawl-ref/source/l_subvault.cc b/crawl-ref/source/l_subvault.cc new file mode 100644 index 0000000000..f15963b222 --- /dev/null +++ b/crawl-ref/source/l_subvault.cc @@ -0,0 +1,57 @@ +/* + * File: l_subvault.cc + * Summary: Subvault routines (library "dgn"). + */ + +#include "AppHdr.h" + +#include "coord.h" +#include "cluautil.h" +#include "l_libs.h" +#include "mapdef.h" + +static int dgn_is_subvault(lua_State *ls) +{ + MAP(ls, 1, map); + + lua_pushboolean(ls, map->is_subvault()); + return (1); +} + +static int dgn_default_subvault_glyphs(lua_State *ls) +{ + MAP(ls, 1, map); + + map->apply_subvault_mask(); + return (0); +} + +static int dgn_subvault_cell_valid(lua_State *ls) +{ + MAP(ls, 1, map); + coord_def c; + c.x = luaL_checkint(ls, 2); + c.y = luaL_checkint(ls, 3); + + lua_pushboolean(ls, map->subvault_cell_valid(c)); + return (1); +} + +static int dgn_subvault_size(lua_State *ls) +{ + MAP(ls, 1, map); + + lua_pushnumber(ls, map->subvault_width()); + lua_pushnumber(ls, map->subvault_height()); + return (2); +} + +const struct luaL_reg dgn_subvault_dlib[] = +{ +{ "is_subvault", dgn_is_subvault }, +{ "default_subvault_glyphs", dgn_default_subvault_glyphs }, +{ "subvault_cell_valid", dgn_subvault_cell_valid }, +{ "subvault_size", dgn_subvault_size }, + +{ NULL, NULL } +}; -- cgit v1.2.3-54-g00ecf