#include #include #include lua_State * engine_lua_state; #include "lua_manual.c" int engine_luaf_free(lua_State *L) { void * ptr = lua_touserdata(L,1); engine_free(ptr); return 0; } int engine_luaf_window_init(lua_State *L) { int width = luaL_checkinteger(L,1); int height = luaL_checkinteger(L,2); char * title = (char *)luaL_checkstring(L,3); engine_window_init(width,height,title); return 0; } int engine_luaf_window_present(lua_State *L) { engine_window_present(); return 0; } int engine_luaf_surface_color_set(lua_State *L) { char r = luaL_checkinteger(L,1); char g = luaL_checkinteger(L,2); char b = luaL_checkinteger(L,3); char a = luaL_checkinteger(L,4); engine_surface_color_set(r,g,b,a); return 0; } int engine_luaf_surface_draw_pixel(lua_State *L) { int x = luaL_checkinteger(L,1); int y = luaL_checkinteger(L,2); engine_surface_draw_pixel(x,y); return 0; } int engine_luaf_time_get(lua_State *L) { long long outvar = engine_time_get(); lua_pushinteger(L,outvar); return 1; } int engine_luaf_time_sleep(lua_State *L) { long long ms = luaL_checkinteger(L,1); engine_time_sleep(ms); return 0; } int engine_luaf_event_get(lua_State *L) { struct ENGINE_EVENT * outvar = engine_event_get(); lua_pushlightuserdata(L,outvar); 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 width = luaL_checkinteger(L,1); int height = luaL_checkinteger(L,2); struct ENGINE_TEXTURE * outvar = engine_texture_create(width,height); lua_pushlightuserdata(L,outvar); return 1; } int engine_luaf_texture_color_set(lua_State *L) { char r = luaL_checkinteger(L,1); char g = luaL_checkinteger(L,2); char b = luaL_checkinteger(L,3); char a = luaL_checkinteger(L,4); engine_texture_color_set(r,g,b,a); return 0; } int engine_luaf_texture_draw_pixel(lua_State *L) { struct ENGINE_TEXTURE * texture = lua_touserdata(L,1); int x = luaL_checkinteger(L,2); int y = luaL_checkinteger(L,3); engine_texture_draw_pixel(texture,x,y); return 0; } int engine_luaf_texture_destroy(lua_State *L) { struct ENGINE_TEXTURE * texture = lua_touserdata(L,1); engine_texture_destroy(texture); return 0; } int engine_luaf_texture_render_2d(lua_State *L) { struct ENGINE_TEXTURE * texture = lua_touserdata(L,1); int sx = luaL_checkinteger(L,2); int sy = luaL_checkinteger(L,3); engine_texture_render_2d(texture,sx,sy); return 0; } int engine_luaf_texture_from_file(lua_State *L) { struct ENGINE_TEXTURE * texture = lua_touserdata(L,1); char * fpath = (char *)luaL_checkstring(L,2); engine_texture_from_file(texture,fpath); return 0; } void engine_lua_init() { engine_lua_state = luaL_newstate(); 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_setglobal (engine_lua_state,"engine_free"); lua_pushcfunction(engine_lua_state,engine_luaf_window_init); lua_setglobal (engine_lua_state,"engine_window_init"); lua_pushcfunction(engine_lua_state,engine_luaf_window_present); lua_setglobal (engine_lua_state,"engine_window_present"); lua_pushcfunction(engine_lua_state,engine_luaf_surface_color_set); lua_setglobal (engine_lua_state,"engine_surface_color_set"); lua_pushcfunction(engine_lua_state,engine_luaf_surface_draw_pixel); lua_setglobal (engine_lua_state,"engine_surface_draw_pixel"); lua_pushcfunction(engine_lua_state,engine_luaf_time_get); lua_setglobal (engine_lua_state,"engine_time_get"); lua_pushcfunction(engine_lua_state,engine_luaf_time_sleep); lua_setglobal (engine_lua_state,"engine_time_sleep"); lua_pushcfunction(engine_lua_state,engine_luaf_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_setglobal (engine_lua_state,"engine_texture_create"); lua_pushcfunction(engine_lua_state,engine_luaf_texture_color_set); lua_setglobal (engine_lua_state,"engine_texture_color_set"); lua_pushcfunction(engine_lua_state,engine_luaf_texture_draw_pixel); lua_setglobal (engine_lua_state,"engine_texture_draw_pixel"); lua_pushcfunction(engine_lua_state,engine_luaf_texture_destroy); lua_setglobal (engine_lua_state,"engine_texture_destroy"); lua_pushcfunction(engine_lua_state,engine_luaf_texture_render_2d); lua_setglobal (engine_lua_state,"engine_texture_render_2d"); lua_pushcfunction(engine_lua_state,engine_luaf_texture_from_file); lua_setglobal (engine_lua_state,"engine_texture_from_file"); engine_lua_init_manual(); luaL_loadfile(engine_lua_state,"assets/scripts/main.lua"); lua_call(engine_lua_state,0,0); }