summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/l_travel.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/l_travel.cc')
-rw-r--r--crawl-ref/source/l_travel.cc54
1 files changed, 54 insertions, 0 deletions
diff --git a/crawl-ref/source/l_travel.cc b/crawl-ref/source/l_travel.cc
new file mode 100644
index 0000000000..8c32d65812
--- /dev/null
+++ b/crawl-ref/source/l_travel.cc
@@ -0,0 +1,54 @@
+/*
+ * File: l_travel.cc
+ * Summary: Travel and exclusions.
+ */
+
+#include "AppHdr.h"
+
+#include "l_libs.h"
+#include "l_defs.h"
+
+#include "cluautil.h"
+#include "coord.h"
+#include "exclude.h"
+#include "player.h"
+
+LUAFN(l_set_exclude)
+{
+ coord_def s;
+ s.x = luaL_checkint(ls, 1);
+ s.y = luaL_checkint(ls, 2);
+ const coord_def p = player2grid(s);
+ if (!in_bounds(p))
+ return (0);
+ int r = LOS_MAX_RADIUS;
+ if (lua_gettop(ls) > 2)
+ r = luaL_checkint(ls, 3);
+ set_exclude(p, r);
+ return (0);
+}
+
+LUAFN(l_del_exclude)
+{
+ coord_def s;
+ s.x = luaL_checkint(ls, 1);
+ s.y = luaL_checkint(ls, 2);
+ const coord_def p = player2grid(s);
+ if (!in_bounds(p))
+ return (0);
+ del_exclude(p);
+ return (0);
+}
+
+static const struct luaL_reg travel_lib[] =
+{
+ { "set_exclude", l_set_exclude },
+ { "del_exclude", l_del_exclude },
+
+ { NULL, NULL }
+};
+
+void cluaopen_travel(lua_State *ls)
+{
+ luaL_openlib(ls, "travel", travel_lib, 0);
+}