diff options
-rw-r--r-- | crawl-ref/source/clua.cc | 100 | ||||
-rw-r--r-- | crawl-ref/source/clua.h | 19 | ||||
-rw-r--r-- | crawl-ref/source/cluautil.cc | 60 | ||||
-rw-r--r-- | crawl-ref/source/cluautil.h | 22 | ||||
-rw-r--r-- | crawl-ref/source/dlua.h | 5 | ||||
-rw-r--r-- | crawl-ref/source/l_dgn.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/l_dgngrd.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/l_dgnit.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/l_dgnmon.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/l_item.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/l_libs.h | 13 | ||||
-rw-r--r-- | crawl-ref/source/l_los.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/l_you.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/makefile.obj | 3 | ||||
-rw-r--r-- | crawl-ref/source/mapmark.cc | 2 |
15 files changed, 110 insertions, 125 deletions
diff --git a/crawl-ref/source/clua.cc b/crawl-ref/source/clua.cc index d7e525da6c..5c15de7389 100644 --- a/crawl-ref/source/clua.cc +++ b/crawl-ref/source/clua.cc @@ -5,49 +5,15 @@ #include "AppHdr.h" -#include <algorithm> -#include <sstream> - #include "clua.h" + +#include "cluautil.h" +#include "dlua.h" #include "l_libs.h" -#include "abl-show.h" -#include "artefact.h" -#include "command.h" -#include "chardump.h" -#include "cio.h" -#include "delay.h" -#include "dgnevent.h" -#include "dungeon.h" #include "files.h" -#include "food.h" -#include "invent.h" -#include "initfile.h" -#include "itemname.h" -#include "itemprop.h" -#include "items.h" -#include "item_use.h" -#include "libutil.h" -#include "macro.h" -#include "mapdef.h" -#include "message.h" -#include "monstuff.h" -#include "mon-util.h" -#include "newgame.h" -#include "notes.h" -#include "output.h" -#include "player.h" -#include "religion.h" -#include "skills2.h" -#include "spl-util.h" #include "state.h" #include "stuff.h" -#include "transfor.h" -#include "travel.h" - -#include <cstring> -#include <map> -#include <cctype> #define BUGGY_PCALL_ERROR "667: Malformed response to guarded pcall." #define BUGGY_SCRIPT_ERROR "666: Killing badly-behaved Lua script." @@ -392,7 +358,6 @@ void CLua::vfnreturns(const char *format, va_list args) lua_pop(ls, nrets); } -static int push_activity_interrupt(lua_State *ls, activity_interrupt_data *t); int CLua::push_args(lua_State *ls, const char *format, va_list args, va_list *targ) { @@ -713,65 +678,6 @@ void clua_register_metatable(lua_State *ls, const char *tn, } } - - -// Pushing various objects. - -static int push_activity_interrupt(lua_State *ls, activity_interrupt_data *t) -{ - if (!t->data) - { - lua_pushnil(ls); - return 0; - } - - switch (t->apt) - { - case AIP_HP_LOSS: - { - const ait_hp_loss *ahl = (const ait_hp_loss *) t->data; - lua_pushnumber(ls, ahl->hp); - lua_pushnumber(ls, ahl->hurt_type); - return 1; - } - case AIP_INT: - lua_pushnumber(ls, *(const int *) t->data); - break; - case AIP_STRING: - lua_pushstring(ls, (const char *) t->data); - break; - case AIP_MONSTER: - // FIXME: We're casting away the const... - push_monster(ls, (monsters *) t->data); - break; - default: - lua_pushnil(ls); - break; - } - return 0; -} - -void clua_push_map(lua_State *ls, map_def *map) -{ - map_def **mapref = clua_new_userdata<map_def *>(ls, MAP_METATABLE); - *mapref = map; -} - -void clua_push_coord(lua_State *ls, const coord_def &c) -{ - lua_pushnumber(ls, c.x); - lua_pushnumber(ls, c.y); -} - -void clua_push_dgn_event(lua_State *ls, const dgn_event *devent) -{ - const dgn_event **de = - clua_new_userdata<const dgn_event *>(ls, DEVENT_METATABLE); - *de = devent; -} - - - //////////////////////////////////////////////////////////////////////// // lua_text_pattern diff --git a/crawl-ref/source/clua.h b/crawl-ref/source/clua.h index bc723c0d90..ed35813dd5 100644 --- a/crawl-ref/source/clua.h +++ b/crawl-ref/source/clua.h @@ -19,9 +19,6 @@ extern "C" { #include <map> #include <set> -#include "libutil.h" -#include "externs.h" - #ifndef CLUA_MAX_MEMORY_USE #define CLUA_MAX_MEMORY_USE (6 * 1024) #endif @@ -292,14 +289,6 @@ static int lua_object_gc(lua_State *ls) std::string quote_lua_string(const std::string &s); -class map_def; -class dgn_event; -void clua_push_map(lua_State *ls, map_def *map); -void clua_push_coord(lua_State *ls, const coord_def &c); -void clua_push_dgn_event(lua_State *ls, const dgn_event *devent); - -void lua_push_items(lua_State *ls, int link); - template <class T> T *clua_new_userdata( lua_State *ls, const char *mt) { @@ -309,18 +298,10 @@ template <class T> T *clua_new_userdata( return static_cast<T*>( udata ); } -void push_monster(lua_State *ls, monsters *mons); - void clua_register_metatable(lua_State *ls, const char *tn, const luaL_reg *lr, int (*gcfn)(lua_State *ls) = NULL); void print_clua_stack(); -#define MAP_METATABLE "dgn.mtmap" -#define DEVENT_METATABLE "dgn.devent" -#define MAPMARK_METATABLE "dgn.mapmark" -#define MAPGRD_METATABLE "dgn.mapgrd" -#define MAPGRD_COL_METATABLE "dgn.mapgrdcol" - #endif diff --git a/crawl-ref/source/cluautil.cc b/crawl-ref/source/cluautil.cc new file mode 100644 index 0000000000..291b717a21 --- /dev/null +++ b/crawl-ref/source/cluautil.cc @@ -0,0 +1,60 @@ +#include "AppHdr.h" + +#include "cluautil.h" +#include "clua.h" +#include "l_libs.h" + +#include "delay.h" + +int push_activity_interrupt(lua_State *ls, activity_interrupt_data *t) +{ + if (!t->data) + { + lua_pushnil(ls); + return 0; + } + + switch (t->apt) + { + case AIP_HP_LOSS: + { + const ait_hp_loss *ahl = (const ait_hp_loss *) t->data; + lua_pushnumber(ls, ahl->hp); + lua_pushnumber(ls, ahl->hurt_type); + return 1; + } + case AIP_INT: + lua_pushnumber(ls, *(const int *) t->data); + break; + case AIP_STRING: + lua_pushstring(ls, (const char *) t->data); + break; + case AIP_MONSTER: + // FIXME: We're casting away the const... + push_monster(ls, (monsters *) t->data); + break; + default: + lua_pushnil(ls); + break; + } + return 0; +} + +void clua_push_map(lua_State *ls, map_def *map) +{ + map_def **mapref = clua_new_userdata<map_def *>(ls, MAP_METATABLE); + *mapref = map; +} + +void clua_push_coord(lua_State *ls, const coord_def &c) +{ + lua_pushnumber(ls, c.x); + lua_pushnumber(ls, c.y); +} + +void clua_push_dgn_event(lua_State *ls, const dgn_event *devent) +{ + const dgn_event **de = + clua_new_userdata<const dgn_event *>(ls, DEVENT_METATABLE); + *de = devent; +} diff --git a/crawl-ref/source/cluautil.h b/crawl-ref/source/cluautil.h new file mode 100644 index 0000000000..da7d3a5531 --- /dev/null +++ b/crawl-ref/source/cluautil.h @@ -0,0 +1,22 @@ +#ifndef CLUAUTIL_H +#define CLUAUTIL_H + +struct lua_State; + +struct activity_interrupt_data; +int push_activity_interrupt(lua_State *ls, activity_interrupt_data *t); + +class map_def; +void clua_push_map(lua_State *ls, map_def *map); + +void clua_push_coord(lua_State *ls, const coord_def &c); + +class dgn_event; +void clua_push_dgn_event(lua_State *ls, const dgn_event *devent); + +// XXX: currently defined outside cluautil.cc. +class monsters; +void push_monster(lua_State *ls, monsters* mons); +void lua_push_items(lua_State *ls, int link); + +#endif diff --git a/crawl-ref/source/dlua.h b/crawl-ref/source/dlua.h index dc6a30f531..7dc8c1bbb1 100644 --- a/crawl-ref/source/dlua.h +++ b/crawl-ref/source/dlua.h @@ -4,11 +4,10 @@ * Created by: dshaligram on Sat Jun 23 20:02:09 2007 UTC */ -#ifndef LUADGN_H -#define LUADGN_H +#ifndef DLUA_H +#define DLUA_H #include "clua.h" -#include "stuff.h" // for COORDS macro // Defined in acr.cc extern CLua dlua; diff --git a/crawl-ref/source/l_dgn.cc b/crawl-ref/source/l_dgn.cc index 4da61a80dd..3fcf3ac5a6 100644 --- a/crawl-ref/source/l_dgn.cc +++ b/crawl-ref/source/l_dgn.cc @@ -1,7 +1,7 @@ #include "AppHdr.h" -#include "dlua.h" #include "l_libs.h" +#include "cluautil.h" #include <cmath> diff --git a/crawl-ref/source/l_dgngrd.cc b/crawl-ref/source/l_dgngrd.cc index 5a9454bcf9..f85f7ed305 100644 --- a/crawl-ref/source/l_dgngrd.cc +++ b/crawl-ref/source/l_dgngrd.cc @@ -9,6 +9,7 @@ #include "l_libs.h" #include "directn.h" +#include "stuff.h" #include "terrain.h" const char *dngn_feature_names[] = diff --git a/crawl-ref/source/l_dgnit.cc b/crawl-ref/source/l_dgnit.cc index 4f9cebd86c..4ed148940f 100644 --- a/crawl-ref/source/l_dgnit.cc +++ b/crawl-ref/source/l_dgnit.cc @@ -5,7 +5,7 @@ #include "AppHdr.h" -#include "dlua.h" +#include "cluautil.h" #include "l_libs.h" #include "dungeon.h" diff --git a/crawl-ref/source/l_dgnmon.cc b/crawl-ref/source/l_dgnmon.cc index ca1eef82a5..4b8a7bc5ba 100644 --- a/crawl-ref/source/l_dgnmon.cc +++ b/crawl-ref/source/l_dgnmon.cc @@ -5,7 +5,7 @@ #include "AppHdr.h" -#include "dlua.h" +#include "cluautil.h" #include "l_libs.h" #include "dungeon.h" diff --git a/crawl-ref/source/l_item.cc b/crawl-ref/source/l_item.cc index 3152b7d9ef..e9c0048562 100644 --- a/crawl-ref/source/l_item.cc +++ b/crawl-ref/source/l_item.cc @@ -2,7 +2,7 @@ #include <sstream> -#include "clua.h" +#include "cluautil.h" #include "l_libs.h" #include "artefact.h" diff --git a/crawl-ref/source/l_libs.h b/crawl-ref/source/l_libs.h index b274ee269d..705ff65aae 100644 --- a/crawl-ref/source/l_libs.h +++ b/crawl-ref/source/l_libs.h @@ -24,8 +24,18 @@ void cluaopen_you(lua_State *ls); void cluaopen_globals(lua_State *ls); /* + * (Shared) metatable names. + */ + +#define MAP_METATABLE "dgn.mtmap" +#define DEVENT_METATABLE "dgn.devent" +#define MAPMARK_METATABLE "dgn.mapmark" +#define MAPGRD_METATABLE "dgn.mapgrd" +#define MAPGRD_COL_METATABLE "dgn.mapgrdcol" + +/* * Libraries and loaders for dlua, accessed from init_dungeon_lua(). - * TODO: Move these to dluaopen_*. + * TODO: Rename these to dluaopen_*. */ extern const struct luaL_reg debug_dlib[]; @@ -55,6 +65,7 @@ void dluaopen_you(lua_State *ls); /* * Macros for processing object arguments. + * TODO: Collect these in cluautil.{h,cc}. */ #define GETCOORD(c, p1, p2, boundfn) \ coord_def c; \ diff --git a/crawl-ref/source/l_los.cc b/crawl-ref/source/l_los.cc index e83c9358c7..5c841fc50d 100644 --- a/crawl-ref/source/l_los.cc +++ b/crawl-ref/source/l_los.cc @@ -11,6 +11,7 @@ #include "los.h" #include "ray.h" +#include "stuff.h" #define RAY_METATABLE "dgn.ray" diff --git a/crawl-ref/source/l_you.cc b/crawl-ref/source/l_you.cc index 4e9809094d..5718402139 100644 --- a/crawl-ref/source/l_you.cc +++ b/crawl-ref/source/l_you.cc @@ -16,6 +16,7 @@ #include "skills2.h" #include "spells3.h" #include "spl-util.h" +#include "stuff.h" #include "transfor.h" ///////////////////////////////////////////////////////////////////// diff --git a/crawl-ref/source/makefile.obj b/crawl-ref/source/makefile.obj index 30c76c95af..3beea95de9 100644 --- a/crawl-ref/source/makefile.obj +++ b/crawl-ref/source/makefile.obj @@ -115,4 +115,5 @@ view.o \ xom.o \ kills.o \ mt19937ar.o \ -clua.o +clua.o \ +cluautil.o diff --git a/crawl-ref/source/mapmark.cc b/crawl-ref/source/mapmark.cc index ecef3cd297..2003f87325 100644 --- a/crawl-ref/source/mapmark.cc +++ b/crawl-ref/source/mapmark.cc @@ -11,9 +11,11 @@ #include "mapmark.h" #include "clua.h" +#include "cluautil.h" #include "directn.h" #include "dlua.h" #include "libutil.h" +#include "l_libs.h" #include "stuff.h" #include "tags.h" |