forked from Fierelier/me.fier.engine
Paul Blart
This commit is contained in:
parent
378240a8cf
commit
1f51cea02c
@ -13,7 +13,6 @@ void handleEvent(struct ENGINE_EVENT * event) {
|
|||||||
frame = 0
|
frame = 0
|
||||||
frameSec = 0
|
frameSec = 0
|
||||||
lastSec = 0
|
lastSec = 0
|
||||||
iters = 0
|
|
||||||
function tick()
|
function tick()
|
||||||
frame = frame + 1
|
frame = frame + 1
|
||||||
frameSec = frameSec + 1
|
frameSec = frameSec + 1
|
||||||
@ -22,22 +21,31 @@ function tick()
|
|||||||
print("FPS: " ..tostring(frameSec))
|
print("FPS: " ..tostring(frameSec))
|
||||||
lastSec = t
|
lastSec = t
|
||||||
frameSec = 0
|
frameSec = 0
|
||||||
iters = iters + 1
|
|
||||||
if iters > 4 then os.exit() end
|
|
||||||
end
|
end
|
||||||
engine_window_present()
|
engine_window_present()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function handleEvent(event,eventData)
|
||||||
|
if eventData[1] == ENGINE_EVENT_TYPE_EXIT then
|
||||||
|
os.exit()
|
||||||
|
end
|
||||||
|
|
||||||
|
if eventData[1] == ENGINE_EVENT_TYPE_INPUT_KB then
|
||||||
|
for _,val in pairs(eventData) do
|
||||||
|
print(tostring(val))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
event = engine_event_get()
|
event = engine_event_get()
|
||||||
--[[
|
eventData = {engine_lua_event_get_data(event)}
|
||||||
if (event->type != ENGINE_EVENT_TYPE_NONE) {
|
if eventData[1] ~= ENGINE_EVENT_TYPE_NONE then
|
||||||
handleEvent(event);
|
handleEvent(event,eventData)
|
||||||
} else {
|
else
|
||||||
tick();
|
|
||||||
}
|
|
||||||
]]--
|
|
||||||
engine_free(event) -- We can't actually do anything with the event yet (no Lua implementation)
|
|
||||||
tick()
|
tick()
|
||||||
|
end
|
||||||
|
|
||||||
|
engine_event_free(event)
|
||||||
engine_texture_render_2d(texture,math.random(-8,102),math.random(-8,72))
|
engine_texture_render_2d(texture,math.random(-8,102),math.random(-8,72))
|
||||||
end
|
end
|
||||||
|
@ -20,6 +20,7 @@ functionBlacklist = [
|
|||||||
"engine_malloc"
|
"engine_malloc"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
statics = toml.loads(open("modules/engine/STATICS.toml").read())
|
||||||
functions = toml.loads(open("modules/engine/FUNCTIONS.toml").read())
|
functions = toml.loads(open("modules/engine/FUNCTIONS.toml").read())
|
||||||
ofile = open("modules/engine/lua.c","w")
|
ofile = open("modules/engine/lua.c","w")
|
||||||
|
|
||||||
@ -27,9 +28,9 @@ ofile.write('''\
|
|||||||
#include <lua5.3/lua.h>
|
#include <lua5.3/lua.h>
|
||||||
#include <lua5.3/lualib.h>
|
#include <lua5.3/lualib.h>
|
||||||
#include <lua5.3/lauxlib.h>
|
#include <lua5.3/lauxlib.h>
|
||||||
|
lua_State * engine_lua_state;
|
||||||
#include "lua_manual.c"
|
#include "lua_manual.c"
|
||||||
|
|
||||||
lua_State * engine_lua_state;
|
|
||||||
''')
|
''')
|
||||||
|
|
||||||
for func in functions:
|
for func in functions:
|
||||||
@ -70,6 +71,10 @@ void engine_lua_init() {
|
|||||||
|
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
for static in statics:
|
||||||
|
ofile.write('\tlua_pushinteger(engine_lua_state,' +static+ ');\n')
|
||||||
|
ofile.write('\tlua_setglobal(engine_lua_state,"' +static+ '");\n')
|
||||||
|
|
||||||
for func in functions:
|
for func in functions:
|
||||||
if func in functionBlacklist: continue
|
if func in functionBlacklist: continue
|
||||||
funcnew = "engine_luaf_" +func.replace("engine_","",1)
|
funcnew = "engine_luaf_" +func.replace("engine_","",1)
|
||||||
|
@ -57,6 +57,12 @@ arguments = []
|
|||||||
argNames = []
|
argNames = []
|
||||||
description = "Get an event. If the type is ENGINE_EVENT_TYPE_NONE, there are no more events. Needs to be freed with engine_free()."
|
description = "Get an event. If the type is ENGINE_EVENT_TYPE_NONE, there are no more events. Needs to be freed with engine_free()."
|
||||||
|
|
||||||
|
[engine_event_free]
|
||||||
|
type = "void"
|
||||||
|
arguments = ["struct ENGINE_EVENT *"]
|
||||||
|
argNames = ["event"]
|
||||||
|
description = "Free the event instance from memory."
|
||||||
|
|
||||||
# TEXTURES
|
# TEXTURES
|
||||||
[engine_texture_create]
|
[engine_texture_create]
|
||||||
type = "struct ENGINE_TEXTURE *"
|
type = "struct ENGINE_TEXTURE *"
|
||||||
|
19
modules/engine/STATICS.toml
Normal file
19
modules/engine/STATICS.toml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[ENGINE_EVENT_TYPE_UNKNOWN]
|
||||||
|
type = "char"
|
||||||
|
value = 0
|
||||||
|
description = "Unknown event (not implemented)."
|
||||||
|
|
||||||
|
[ENGINE_EVENT_TYPE_NONE]
|
||||||
|
type = "char"
|
||||||
|
value = 1
|
||||||
|
description = "Signifies that no more events are in the queue."
|
||||||
|
|
||||||
|
[ENGINE_EVENT_TYPE_EXIT]
|
||||||
|
type = "char"
|
||||||
|
value = 2
|
||||||
|
description = "User has requested the application to exit."
|
||||||
|
|
||||||
|
[ENGINE_EVENT_TYPE_INPUT_KB]
|
||||||
|
type = "char"
|
||||||
|
value = 3
|
||||||
|
description = "A keyboard input has occured."
|
@ -83,33 +83,33 @@ struct ENGINE_EVENT * engine_event_get() {
|
|||||||
SDL_Event sdlevent;
|
SDL_Event sdlevent;
|
||||||
|
|
||||||
if (!SDL_PollEvent(&sdlevent)) {
|
if (!SDL_PollEvent(&sdlevent)) {
|
||||||
struct ENGINE_EVENT_NONE data;
|
struct ENGINE_EVENT_NONE * data = engine_malloc(NULL,sizeof(struct ENGINE_EVENT_NONE));
|
||||||
event->type = ENGINE_EVENT_TYPE_NONE;
|
event->type = ENGINE_EVENT_TYPE_NONE;
|
||||||
event->data = &data;
|
event->data = data;
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sdlevent.type == SDL_QUIT) {
|
if (sdlevent.type == SDL_QUIT) {
|
||||||
struct ENGINE_EVENT_EXIT data;
|
struct ENGINE_EVENT_EXIT * data = engine_malloc(NULL,sizeof(struct ENGINE_EVENT_EXIT));;
|
||||||
event->type = ENGINE_EVENT_TYPE_EXIT;
|
event->type = ENGINE_EVENT_TYPE_EXIT;
|
||||||
event->data = &data;
|
event->data = data;
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sdlevent.type == SDL_KEYDOWN || sdlevent.type == SDL_KEYUP) {
|
if (sdlevent.type == SDL_KEYDOWN || sdlevent.type == SDL_KEYUP) {
|
||||||
if (sdlevent.key.repeat != 0) { goto unknown; }
|
if (sdlevent.key.repeat != 0) { goto unknown; }
|
||||||
struct ENGINE_EVENT_INPUTKB data;
|
struct ENGINE_EVENT_INPUT_KB * data = engine_malloc(NULL,sizeof(struct ENGINE_EVENT_INPUT_KB));
|
||||||
data.pressed = (sdlevent.type == SDL_KEYDOWN);
|
data->pressed = (sdlevent.type == SDL_KEYDOWN);
|
||||||
data.key = sdlevent.key.keysym.scancode;
|
data->key = sdlevent.key.keysym.scancode;
|
||||||
event->type = ENGINE_EVENT_TYPE_INPUTKB;
|
event->type = ENGINE_EVENT_TYPE_INPUT_KB;
|
||||||
event->data = &data;
|
event->data = data;
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
unknown:
|
unknown:
|
||||||
struct ENGINE_EVENT_UNKNOWN data;
|
struct ENGINE_EVENT_UNKNOWN * data = engine_malloc(NULL,sizeof(struct ENGINE_EVENT_INPUT_KB));
|
||||||
event->type = ENGINE_EVENT_TYPE_UNKNOWN;
|
event->type = ENGINE_EVENT_TYPE_UNKNOWN;
|
||||||
event->data = &data;
|
event->data = data;
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#include <lua5.3/lua.h>
|
#include <lua5.3/lua.h>
|
||||||
#include <lua5.3/lualib.h>
|
#include <lua5.3/lualib.h>
|
||||||
#include <lua5.3/lauxlib.h>
|
#include <lua5.3/lauxlib.h>
|
||||||
|
lua_State * engine_lua_state;
|
||||||
#include "lua_manual.c"
|
#include "lua_manual.c"
|
||||||
|
|
||||||
lua_State * engine_lua_state;
|
|
||||||
int engine_luaf_free(lua_State *L) {
|
int engine_luaf_free(lua_State *L) {
|
||||||
void * ptr = lua_touserdata(L,1);
|
void * ptr = lua_touserdata(L,1);
|
||||||
engine_free(ptr);
|
engine_free(ptr);
|
||||||
@ -57,6 +57,12 @@ int engine_luaf_event_get(lua_State *L) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int engine_luaf_event_free(lua_State *L) {
|
||||||
|
struct ENGINE_EVENT * event = lua_touserdata(L,1);
|
||||||
|
engine_event_free(event);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int engine_luaf_texture_create(lua_State *L) {
|
int engine_luaf_texture_create(lua_State *L) {
|
||||||
int width = luaL_checkinteger(L,1);
|
int width = luaL_checkinteger(L,1);
|
||||||
int height = luaL_checkinteger(L,2);
|
int height = luaL_checkinteger(L,2);
|
||||||
@ -107,6 +113,14 @@ void engine_lua_init() {
|
|||||||
engine_lua_state = luaL_newstate();
|
engine_lua_state = luaL_newstate();
|
||||||
luaL_openlibs(engine_lua_state);
|
luaL_openlibs(engine_lua_state);
|
||||||
|
|
||||||
|
lua_pushinteger(engine_lua_state,ENGINE_EVENT_TYPE_UNKNOWN);
|
||||||
|
lua_setglobal(engine_lua_state,"ENGINE_EVENT_TYPE_UNKNOWN");
|
||||||
|
lua_pushinteger(engine_lua_state,ENGINE_EVENT_TYPE_NONE);
|
||||||
|
lua_setglobal(engine_lua_state,"ENGINE_EVENT_TYPE_NONE");
|
||||||
|
lua_pushinteger(engine_lua_state,ENGINE_EVENT_TYPE_EXIT);
|
||||||
|
lua_setglobal(engine_lua_state,"ENGINE_EVENT_TYPE_EXIT");
|
||||||
|
lua_pushinteger(engine_lua_state,ENGINE_EVENT_TYPE_INPUT_KB);
|
||||||
|
lua_setglobal(engine_lua_state,"ENGINE_EVENT_TYPE_INPUT_KB");
|
||||||
lua_pushcfunction(engine_lua_state,engine_luaf_free);
|
lua_pushcfunction(engine_lua_state,engine_luaf_free);
|
||||||
lua_setglobal (engine_lua_state,"engine_free");
|
lua_setglobal (engine_lua_state,"engine_free");
|
||||||
lua_pushcfunction(engine_lua_state,engine_luaf_window_init);
|
lua_pushcfunction(engine_lua_state,engine_luaf_window_init);
|
||||||
@ -123,6 +137,8 @@ void engine_lua_init() {
|
|||||||
lua_setglobal (engine_lua_state,"engine_time_sleep");
|
lua_setglobal (engine_lua_state,"engine_time_sleep");
|
||||||
lua_pushcfunction(engine_lua_state,engine_luaf_event_get);
|
lua_pushcfunction(engine_lua_state,engine_luaf_event_get);
|
||||||
lua_setglobal (engine_lua_state,"engine_event_get");
|
lua_setglobal (engine_lua_state,"engine_event_get");
|
||||||
|
lua_pushcfunction(engine_lua_state,engine_luaf_event_free);
|
||||||
|
lua_setglobal (engine_lua_state,"engine_event_free");
|
||||||
lua_pushcfunction(engine_lua_state,engine_luaf_texture_create);
|
lua_pushcfunction(engine_lua_state,engine_luaf_texture_create);
|
||||||
lua_setglobal (engine_lua_state,"engine_texture_create");
|
lua_setglobal (engine_lua_state,"engine_texture_create");
|
||||||
lua_pushcfunction(engine_lua_state,engine_luaf_texture_color_set);
|
lua_pushcfunction(engine_lua_state,engine_luaf_texture_color_set);
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
void engine_lua_init_manual() {
|
int engine_luaf_lua_event_get_data(lua_State *L) {
|
||||||
|
struct ENGINE_EVENT * event = lua_touserdata(L,1);
|
||||||
|
char type = event->type;
|
||||||
|
if (type == ENGINE_EVENT_TYPE_UNKNOWN) { goto simple; }
|
||||||
|
if (type == ENGINE_EVENT_TYPE_NONE) { goto simple; }
|
||||||
|
if (type == ENGINE_EVENT_TYPE_EXIT) { goto simple; }
|
||||||
|
if (type == ENGINE_EVENT_TYPE_INPUT_KB) {
|
||||||
|
struct ENGINE_EVENT_INPUT_KB * data = event->data;
|
||||||
|
lua_pushinteger(L,type);
|
||||||
|
lua_pushinteger(L,data->key);
|
||||||
|
lua_pushinteger(L,data->pressed);
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
type = ENGINE_EVENT_TYPE_UNKNOWN;
|
||||||
|
simple:
|
||||||
|
lua_pushinteger(L,type);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void engine_lua_init_manual() {
|
||||||
|
lua_pushcfunction(engine_lua_state,engine_luaf_lua_event_get_data);
|
||||||
|
lua_setglobal (engine_lua_state,"engine_lua_event_get_data");
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@ static char ENGINE_EVENT_TYPE_NONE = 1;
|
|||||||
struct ENGINE_EVENT_NONE { };
|
struct ENGINE_EVENT_NONE { };
|
||||||
static char ENGINE_EVENT_TYPE_EXIT = 2;
|
static char ENGINE_EVENT_TYPE_EXIT = 2;
|
||||||
struct ENGINE_EVENT_EXIT { };
|
struct ENGINE_EVENT_EXIT { };
|
||||||
static char ENGINE_EVENT_TYPE_INPUTKB = 3;
|
static char ENGINE_EVENT_TYPE_INPUT_KB = 3;
|
||||||
struct ENGINE_EVENT_INPUTKB { char key; char pressed; };
|
struct ENGINE_EVENT_INPUT_KB { char key; char pressed; };
|
||||||
|
|
||||||
void * engine_malloc(void * pnt,size_t size) {
|
void * engine_malloc(void * pnt,size_t size) {
|
||||||
void * mem = realloc(pnt,size);
|
void * mem = realloc(pnt,size);
|
||||||
@ -20,3 +20,8 @@ void * engine_malloc(void * pnt,size_t size) {
|
|||||||
void engine_free(void *pnt) {
|
void engine_free(void *pnt) {
|
||||||
free(pnt);
|
free(pnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void engine_event_free(struct ENGINE_EVENT * event) {
|
||||||
|
engine_free(event->data);
|
||||||
|
engine_free(event);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user