mirror of
https://github.com/UberGames/rpgxEF.git
synced 2024-11-15 01:11:25 +00:00
a39565b783
... 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)
75 lines
1.3 KiB
C
75 lines
1.3 KiB
C
#include "cg_lua.h"
|
|
|
|
#ifdef CG_LUA
|
|
static int Cent_GC(lua_State * L)
|
|
{
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int Cent_ToString(lua_State * L)
|
|
{
|
|
cent_t *cent;
|
|
centity_t *ent;
|
|
char buf[MAX_STRING_CHARS];
|
|
|
|
cent = Lua_GetCent(L, 1);
|
|
ent = cent->e;
|
|
Com_sprintf(buf, sizeof(buf), "centity: id=%d pointer=%p\n", ent - cg_entities, ent);
|
|
lua_pushstring(L, buf);
|
|
|
|
return 1;
|
|
}
|
|
|
|
static const luaL_Reg Centity_ctor[] = {
|
|
{NULL, NULL}
|
|
};
|
|
|
|
static const luaL_Reg Centity_meta[] = {
|
|
{"__gc", Cent_GC},
|
|
{"__tostring", Cent_ToString},
|
|
|
|
{NULL, NULL}
|
|
};
|
|
|
|
/*void dummy(gentity_t *ent) {
|
|
ent->timestamp;
|
|
}*/
|
|
|
|
int Luaopen_Cent(lua_State * L)
|
|
{
|
|
luaL_newmetatable(L, "cgame.centity");
|
|
|
|
lua_pushstring(L, "__index");
|
|
lua_pushvalue(L, -2);
|
|
lua_settable(L, -3);
|
|
|
|
luaL_register(L, NULL, Centity_meta);
|
|
luaL_register(L, "centity", Centity_ctor);
|
|
|
|
return 1;
|
|
}
|
|
|
|
void Lua_PushCent(lua_State * L, centity_t * ent)
|
|
{
|
|
cent_t *cent;
|
|
|
|
if(!ent)
|
|
lua_pushnil(L);
|
|
else {
|
|
cent = (cent_t *)lua_newuserdata(L, sizeof(cent_t));
|
|
luaL_getmetatable(L, "cgame.centity");
|
|
lua_setmetatable(L, -2);
|
|
cent->e = ent;
|
|
}
|
|
}
|
|
|
|
cent_t *Lua_GetCent(lua_State * L, int argNum)
|
|
{
|
|
void *ud;
|
|
|
|
ud = luaL_checkudata(L, argNum, "cgame.centity");
|
|
luaL_argcheck(L, ud != NULL, argNum, "\'centity\' expected");
|
|
return (cent_t *) ud;
|
|
}
|
|
#endif
|