diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-10-27 21:25:59 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-10-27 23:16:54 +0100 |
commit | bf18513ac06c9a214f07c9a90560ebb8356ae1b0 (patch) | |
tree | 8e229f6aabf9db877b20f4a368b669d93309f87d /crawl-ref/source | |
parent | 227fc6f7a56b489b3758ab4c89714d0c447b10b3 (diff) | |
download | crawl-ref-bf18513ac06c9a214f07c9a90560ebb8356ae1b0.tar.gz crawl-ref-bf18513ac06c9a214f07c9a90560ebb8356ae1b0.zip |
Add lua binding for inspecting env.show.
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/clua.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/cluautil.h | 3 | ||||
-rw-r--r-- | crawl-ref/source/l_defs.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/l_libs.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/l_moninf.cc | 9 | ||||
-rw-r--r-- | crawl-ref/source/l_view.cc | 37 | ||||
-rw-r--r-- | crawl-ref/source/makefile.obj | 1 |
7 files changed, 47 insertions, 6 deletions
diff --git a/crawl-ref/source/clua.cc b/crawl-ref/source/clua.cc index ba6302a041..48dadbb355 100644 --- a/crawl-ref/source/clua.cc +++ b/crawl-ref/source/clua.cc @@ -581,6 +581,7 @@ void CLua::init_lua() cluaopen_file(_state); cluaopen_moninf(_state); cluaopen_options(_state); + cluaopen_view(_state); cluaopen_globals(_state); diff --git a/crawl-ref/source/cluautil.h b/crawl-ref/source/cluautil.h index 2acbcf18f6..8ea98028ee 100644 --- a/crawl-ref/source/cluautil.h +++ b/crawl-ref/source/cluautil.h @@ -149,6 +149,9 @@ level_id dlua_level_id(lua_State *ls, int ndx); #define COORDS(c, p1, p2) \ GETCOORD(c, p1, p2, in_bounds) +#define COORDSHOW(c, p1, p2) \ + GETCOORD(c, p1, p2, in_show_bounds) + #define FEAT(f, pos) \ dungeon_feature_type f = check_lua_feature(ls, pos) diff --git a/crawl-ref/source/l_defs.h b/crawl-ref/source/l_defs.h index 439e9e7d0e..641af4a117 100644 --- a/crawl-ref/source/l_defs.h +++ b/crawl-ref/source/l_defs.h @@ -13,6 +13,7 @@ std::vector<std::string> dungeon_feature_matches(const std::string &name); const char *dungeon_feature_name(dungeon_feature_type feat); std::string dgn_set_default_depth(const std::string &s); void dgn_reset_default_depth(); +bool in_show_bounds(const coord_def &c); #endif diff --git a/crawl-ref/source/l_libs.h b/crawl-ref/source/l_libs.h index 115c1928ac..ecbecd12ba 100644 --- a/crawl-ref/source/l_libs.h +++ b/crawl-ref/source/l_libs.h @@ -19,6 +19,7 @@ void cluaopen_item(lua_State *ls); void cluaopen_kills(lua_State *ls); // defined in kills.cc void cluaopen_moninf(lua_State *ls); void cluaopen_options(lua_State *ls); +void cluaopen_view(lua_State *ls); void cluaopen_you(lua_State *ls); void cluaopen_globals(lua_State *ls); diff --git a/crawl-ref/source/l_moninf.cc b/crawl-ref/source/l_moninf.cc index 10a3bfbfbb..6224837e9e 100644 --- a/crawl-ref/source/l_moninf.cc +++ b/crawl-ref/source/l_moninf.cc @@ -58,23 +58,20 @@ bool in_show_bounds(const coord_def &s) return (s.rdist() <= ENV_SHOW_OFFSET); } -coord_def _show2grid(const coord_def &s) +coord_def player2grid(const coord_def &s) { return (you.pos() + s); } -coord_def _grid2show(const coord_def &g) +coord_def grid2player(const coord_def &g) { return (g - you.pos()); } -#define COORDSHOW(c, p1, p2) \ - GETCOORD(c, p1, p2, in_show_bounds) - LUAFN(mi_get_monster_at) { COORDSHOW(s, 1, 2) - coord_def p = _show2grid(s); + coord_def p = player2grid(s); if (!you.see_cell(p)) return (0); if (env.mgrid(p) == NON_MONSTER) diff --git a/crawl-ref/source/l_view.cc b/crawl-ref/source/l_view.cc new file mode 100644 index 0000000000..23175d3670 --- /dev/null +++ b/crawl-ref/source/l_view.cc @@ -0,0 +1,37 @@ +/* + * File: l_view.cc + * Summary: User interaction with env.show. + */ + +#include "AppHdr.h" + +#include "l_libs.h" + +#include "cluautil.h" +#include "env.h" +#include "l_defs.h" + +coord_def player2show(const coord_def &s) +{ + return (s + coord_def(ENV_SHOW_OFFSET, ENV_SHOW_OFFSET)); +} + +LUAFN(view_feature_at) +{ + COORDSHOW(s, 1, 2) + const coord_def p = player2show(s); + lua_pushnumber(ls, env.show(p)); + return (1); +} + +static const struct luaL_reg view_lib[] = +{ + { "feature_at", view_feature_at }, + + { NULL, NULL } +}; + +void cluaopen_view(lua_State *ls) +{ + luaL_openlib(ls, "view", view_lib, 0); +} diff --git a/crawl-ref/source/makefile.obj b/crawl-ref/source/makefile.obj index 2e32e73cfe..c3ac7cb2c1 100644 --- a/crawl-ref/source/makefile.obj +++ b/crawl-ref/source/makefile.obj @@ -65,6 +65,7 @@ l_mapmrk.o \ l_moninf.o \ l_mons.o \ l_option.o \ +l_view.o \ l_you.o \ lev-pand.o \ libutil.o \ |