mirror of
https://github.com/UberGames/RPG-X2.git
synced 2024-11-24 13:21:37 +00:00
Some cgame lua things
This commit is contained in:
parent
b45d86b603
commit
268f6dcc74
6 changed files with 137 additions and 20 deletions
|
@ -59,6 +59,8 @@ OBJ = \
|
||||||
cg_lua.o \
|
cg_lua.o \
|
||||||
lua_vector.o \
|
lua_vector.o \
|
||||||
lua_qmath.o \
|
lua_qmath.o \
|
||||||
|
lua_cfx.o \
|
||||||
|
lua_cent.o \
|
||||||
|
|
||||||
# depency objects from game
|
# depency objects from game
|
||||||
OBJDEP = \
|
OBJDEP = \
|
||||||
|
@ -151,6 +153,8 @@ fx_tetrion.o : fx_tetrion.c; $(DO_CC)
|
||||||
fx_transporter.o : fx_transporter.c; $(DO_CC)
|
fx_transporter.o : fx_transporter.c; $(DO_CC)
|
||||||
lua_qmath.o: ../game/lua_qmath.c; $(DO_CC)
|
lua_qmath.o: ../game/lua_qmath.c; $(DO_CC)
|
||||||
lua_vector.o: ../game/lua_vector.c; $(DO_CC)
|
lua_vector.o: ../game/lua_vector.c; $(DO_CC)
|
||||||
|
lua_cfx.o: lua_cfx.c; $(DO_CC)
|
||||||
|
lua_cent.o: lua_cent.c; $(DO_CC)
|
||||||
|
|
||||||
# dependencies from game
|
# dependencies from game
|
||||||
q_shared.o: ../game/q_shared.c; $(DO_CC)
|
q_shared.o: ../game/q_shared.c; $(DO_CC)
|
||||||
|
|
|
@ -2,13 +2,7 @@
|
||||||
|
|
||||||
#include "cg_lua.h"
|
#include "cg_lua.h"
|
||||||
|
|
||||||
#ifdef G_LUA
|
#ifdef CG_LUA
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__WIN32__) || defined(__APPLE__) || 1 /* linux, mingw32, OS X - the 1 is temporary*/
|
|
||||||
#include <dirent.h> /* Note the MSVC project assumes mingw is installed at C:\MinGW\include */
|
|
||||||
#else // MSVC
|
|
||||||
// TODO: I don't care much about MSVC as I user mingw on Windows to compile :P
|
|
||||||
#endif
|
|
||||||
|
|
||||||
lvm_t *lVM[NUM_VMS];
|
lvm_t *lVM[NUM_VMS];
|
||||||
fileHandle_t lualog;
|
fileHandle_t lualog;
|
||||||
|
@ -105,24 +99,17 @@ qboolean LoadLuaFile(char *path, int num_vm)
|
||||||
|
|
||||||
qboolean CG_LuaInit()
|
qboolean CG_LuaInit()
|
||||||
{
|
{
|
||||||
#if defined(__linux__) || defined(__WIN32__) || defined(__APPLE__) || 1 /* linux, mingw32, OS X - the 1 is temporary*/
|
char fxfilename[MAX_QPATH];
|
||||||
DIR *pdir = NULL;
|
fileHandle_t fxfile;
|
||||||
struct dirent *pent = NULL;
|
|
||||||
#else // MSVC
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CG_Printf("------- CG_LuaInit -------\n");
|
CG_Printf("------- CG_LuaInit -------\n");
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__WIN32__) || defined(__APPLE__) || 1 /* linux, mingw32, OS X - the 1 is temporary*/
|
// read map fx file
|
||||||
|
|
||||||
#else // MSVC
|
|
||||||
|
|
||||||
#endif
|
// open log file
|
||||||
|
|
||||||
// not much to do for now
|
|
||||||
if(cg_logLua.integer) {
|
if(cg_logLua.integer) {
|
||||||
trap_FS_FOpenFile("./cg_lua.log", &lualog, FS_APPEND);
|
trap_FS_FOpenFile("cg_lua.log", &lualog, FS_APPEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
CG_Printf("------- CG_LuaInit Finish -------\n");
|
CG_Printf("------- CG_LuaInit Finish -------\n");
|
||||||
|
|
|
@ -66,4 +66,36 @@ void Lua_PushVector(lua_State *L, vec3_t v);
|
||||||
vec_t *Lua_GetVector(lua_State *L, int argNum);
|
vec_t *Lua_GetVector(lua_State *L, int argNum);
|
||||||
int Lua_IsVector(lua_State *L, int index);
|
int Lua_IsVector(lua_State *L, int index);
|
||||||
vec3_t *Lua_GetVectorMisc(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;
|
||||||
|
|
||||||
|
#ifdef QVM
|
||||||
|
#define MAX_CFX_CNT 32
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
cfx_t *cfx[MAX_CFX_CNT];
|
||||||
|
int cnt;
|
||||||
|
} cfxList_t;
|
||||||
|
#else
|
||||||
|
typedef struct {
|
||||||
|
cfx_t **cfx;
|
||||||
|
int cnt;
|
||||||
|
} cfxList_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
75
cgame/lua_cent.c
Normal file
75
cgame/lua_cent.c
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
#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
|
19
cgame/lua_cfx.c
Normal file
19
cgame/lua_cfx.c
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#include "cg_lua.h"
|
||||||
|
|
||||||
|
#ifdef CG_LUA
|
||||||
|
|
||||||
|
void Lua_CFX_ParseMapFxFile(fileHandle_t *f) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void Lua_CFX_LoadMapFxFile(void) {
|
||||||
|
char filename[MAX_QPATH];
|
||||||
|
fileHandle_t file;
|
||||||
|
|
||||||
|
sprintf(filename, "maps/%s.fx", cgs.mapname);
|
||||||
|
trap_FS_FOpenFile(filename, &file, FS_READ);
|
||||||
|
if(!file) return;
|
||||||
|
|
||||||
|
Lua_CFX_ParseMapFxFile(&file);
|
||||||
|
}
|
||||||
|
#endif
|
BIN
stefgame.suo
BIN
stefgame.suo
Binary file not shown.
Loading…
Reference in a new issue