#ifndef _G_LUA_H #define _G_LUA_H #include "cg_local.h" #ifndef CG_LUA_H_ #define CG_LUA_H_ #if (defined __linux__ || defined __WIN32__) // linux or mingw #include "../game/lua.h" #include "../game/lauxlib.h" #include "../game/lualib.h" #else #include "../game/lua.h" #include "../game/lauxlib.h" #include "../game/lualib.h" #endif #define NUM_VMS 1 #if defined __linux__ #define HOSTARCH "UNIX" #define EXTENSION "so" #elif defined WIN32 #define HOSTARCH "WIN32" #define EXTENSION "dll" #elif defined __APPLE__ #define HOSTARCH "UNIX" #define EXTENSION "dylib" #endif #define Lua_RegisterGlobal(L, n, v) (lua_pushstring(L, v), lua_setglobal(L, n)) #define Lua_RegConstInteger(L, n) (lua_pushstring(L, #n), lua_pushinteger(L, n), lua_settable(L, -3)) #define Lua_RegConstString(L, n) (lua_pushstring(L, #n), lua_pushstring(L, n), lua_settable(L, -3)) typedef struct { int32_t id; char filename[MAX_QPATH]; char *code; int32_t code_size; int32_t error; lua_State *L; } lvm_t; extern lvm_t *lVM[NUM_VMS]; void QDECL LUA_DEBUG(const char *fmt, ...); void QDECL LUA_LOG(const char *fmt, ...); qboolean CG_LuaInit(void); qboolean CG_LuaCall(lvm_t *vm, char *func, int32_t nargs, int32_t nresults); qboolean CG_LuaResume(lvm_t *vm, lua_State *T, char *func, int32_t nargs); qboolean CG_LuaGetFunction(lvm_t *vm, char *name); qboolean CG_LuaGetFunctionT(lua_State *T, char *name); qboolean CG_LuaStartVM(lvm_t *vm); void CG_LuaStopVM(lvm_t *vm); void CG_LuaShutdown(void); void CG_LuaStatus(void); lvm_t *CG_LuaGetVM(lua_State *L); // lua_cgame.c int32_t Luaopen_CGame(lua_State *L); // lua_qmath.c int32_t Luaopen_Qmath(lua_State *L); // lua_vector.c int32_t Luaopen_Vector(lua_State *L); void Lua_PushVector(lua_State *L, vec3_t v); vec_t *Lua_GetVector(lua_State *L, int32_t argNum); int32_t Lua_IsVector(lua_State *L, int32_t index); vec3_t *Lua_GetVectorMisc(lua_State *L, int32_t *index); // lua_cfx.c typedef struct { char luaFunc[MAX_QPATH]; } cfx_t; typedef struct { cfx_t **cfx; int32_t cnt; } cfxList_t; void Lua_CFX_LoadMapFxFile(void); // lua_cent.c typedef struct { centity_t *e; } cent_t; int32_t Luaopen_Cent(lua_State *L); void Lua_PushCent(lua_State *L, centity_t *ent); cent_t *Lua_GetCent(lua_State *L, int32_t argNum); // lua_refent.c typedef struct { refEntity_t *r; } rent_t; int32_t Luaopen_Rent(lua_State *L); void Lua_PushRent(lua_State *L, refEntity_t *rent); rent_t *Lua_GetRent(lua_State *L, int32_t argNum); #endif /* CG_LUA_H_ */ #endif