summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-10-27 21:25:59 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-10-27 23:16:54 +0100
commitbf18513ac06c9a214f07c9a90560ebb8356ae1b0 (patch)
tree8e229f6aabf9db877b20f4a368b669d93309f87d /crawl-ref/source
parent227fc6f7a56b489b3758ab4c89714d0c447b10b3 (diff)
downloadcrawl-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.cc1
-rw-r--r--crawl-ref/source/cluautil.h3
-rw-r--r--crawl-ref/source/l_defs.h1
-rw-r--r--crawl-ref/source/l_libs.h1
-rw-r--r--crawl-ref/source/l_moninf.cc9
-rw-r--r--crawl-ref/source/l_view.cc37
-rw-r--r--crawl-ref/source/makefile.obj1
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 \