rpgxef/code/cgame/cg_lua.h
Walter Julius Hennecke a39565b783 Integrated RPG-X2 rpgxEF edition into the rpgxEF repo
... not quite content with where the project files lie but it is ok for
now.
... compiling works fine so far (only tested mingw32 right now)
2012-08-04 12:54:37 +02:00

99 lines
2.4 KiB
C

#ifndef _G_LUA_H
#define _G_LUA_H
#include "cg_local.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 {
int id;
char filename[MAX_QPATH];
char *code;
int code_size;
int 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, int nargs, int nresults);
qboolean CG_LuaResume(lvm_t *vm, lua_State *T, char *func, int 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
int Luaopen_CGame(lua_State *L);
// lua_qmath.c
int Luaopen_Qmath(lua_State *L);
// lua_vector.c
int Luaopen_Vector(lua_State *L);
void Lua_PushVector(lua_State *L, vec3_t v);
vec_t *Lua_GetVector(lua_State *L, int argNum);
int Lua_IsVector(lua_State *L, int index);
vec3_t *Lua_GetVectorMisc(lua_State *L, int *index);
// lua_cfx.c
typedef struct {
char luaFunc[MAX_QPATH];
} cfx_t;
typedef struct {
cfx_t **cfx;
int cnt;
} cfxList_t;
void Lua_CFX_LoadMapFxFile(void);
// lua_cent.c
typedef struct {
centity_t *e;
} cent_t;
int Luaopen_Cent(lua_State *L);
void Lua_PushCent(lua_State *L, centity_t *ent);
cent_t *Lua_GetCent(lua_State *L, int argNum);
// lua_refent.c
typedef struct {
refEntity_t *r;
} rent_t;
int Luaopen_Rent(lua_State *L);
void Lua_PushRent(lua_State *L, refEntity_t *rent);
rent_t *Lua_GetRent(lua_State *L, int argNum);
#endif