diff options
Diffstat (limited to 'src/libjin-lua/je_lua_jin.cpp')
-rw-r--r-- | src/libjin-lua/je_lua_jin.cpp | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/src/libjin-lua/je_lua_jin.cpp b/src/libjin-lua/je_lua_jin.cpp deleted file mode 100644 index 256e081..0000000 --- a/src/libjin-lua/je_lua_jin.cpp +++ /dev/null @@ -1,187 +0,0 @@ -#include "common/je_lua.h" -#include "common/je_lua_common.h" -#include "modules/je_lua_modules.h" -//#include "je_lua_embed.h" -#include "je_lua_jin.h" - -namespace JinEngine -{ - namespace Lua - { - - LUA_IMPLEMENT int l_getversion(lua_State* L) - { - luax_pushstring(L, VERSION); - return 1; - } - - LUA_IMPLEMENT int l_getAuthor(lua_State* L) - { - luax_pushstring(L, AUTHOR); - return 1; - } - - LUA_IMPLEMENT int l_getOS(lua_State* L) - { - #ifdef _WIN32 - luax_pushstring(L, "windows"); - #elif defined __unix__ - luax_pushstring(L, "unix"); - #elif defined __APPLE__ - luax_pushstring(L, "macos"); - #endif - return 1; - } - - LUA_IMPLEMENT int l_revision(lua_State* L) - { - luax_pushnumber(L, REVISION); - return 1; - } - - // Register jin module, keep it on the top of stack. - // The reason why not using luaL_register is because we want register some variables into jin module. - LUA_EXPORT void open(lua_State* L) - { - jin_log_info("Openning jin library."); - - luax_globaltable(L, MODULE_NAME); - - const luax_Str s[] = { - { "version", VERSION }, - { "author", AUTHOR }, - { "codename", CODE_NAME }, - { 0, 0 } - }; - const luax_Num n[] = { - { "revision", REVISION }, - { 0, 0 } - }; - // Register values. - luax_setfieldstrings(L, s); - luax_setfieldnumbers(L, n); - - luax_Reg modules[] = { - { "core", luaopen_core }, - { "event", luaopen_event }, - { "graphics", luaopen_graphics }, - { "time", luaopen_time }, - { "mouse", luaopen_mouse }, - { "keyboard", luaopen_keyboard }, - { "filesystem", luaopen_filesystem }, - { "net", luaopen_net }, - { "audio", luaopen_audio }, - { "joypad", luaopen_joypad }, - { "math", luaopen_math }, - { "thread", luaopen_thread }, - { "bit", luaopen_bit }, - //{"ai", luaopen_ai }, - { 0, 0 } - }; - - // Register sub modules. - for (int i = 0; modules[i].name; ++i) - { - modules[i].func(L); - luax_setfield(L, -2, modules[i].name); - } - - // Pop jin table. - luax_pop(L, 1); - - jin_log_info("Done."); - } - - // Embed structure. - struct jin_Embed - { - const char* file; - const char* source; - }; - - // Embed scripts. - #include "scripts/ai/state_machine.lua.h" - #include "scripts/graphics/graphics.lua.h" - #include "scripts/keyboard/keyboard.lua.h" - #include "scripts/mouse/mouse.lua.h" - #include "scripts/path/path.lua.h" - #include "scripts/time/time.lua.h" - #include "scripts/utils/json.lua.h" - #include "scripts/utils/xml.lua.h" - #include "scripts/log.lua.h" - #include "scripts/tiledmap/tiledmap.lua.h" - #include "scripts/physics/physics.lua.h" - #include "scripts/audio/audio.lua.h" - - #include "scripts/app.lua.h" - - // In order. - static const jin_Embed modules[] = { - // ai - { "state_machine.lua", state_machine_lua }, - // keyboard - { "keyboard.lua", keyboard_lua }, - { "mouse.lua", mouse_lua }, - { "graphics.lua", graphics_lua }, - { "path.lua", path_lua }, - { "time.lua", time_lua }, - { "json.lua", json_lua }, - { "xml.lua", xml_lua }, - { "tiledmap.lua", tiledmap_lua }, - { "physics.lua", physics_lua }, - { "audio.lua", audio_lua }, - // - { "log.lua", log_lua }, - { 0, 0 } - }; - - static const jin_Embed bootscript = { "app.lua", app_lua }; - - static void embed(lua_State* L) - { - jin_log_info("Load embeded scripts."); - const char* file, *source; - for (int i = 0; modules[i].file != 0; ++i) - { - file = modules[i].file; - source = modules[i].source; - jin_log_info("Embed script \"%s\".", file); - luax_clearstack(L); - if (luax_loadbuffer(L, source, strlen(source), file) == 0) - { - luax_call(L, 0, 0); - } - else - { - jin_log_error("Embed script \"%s\" failed.", file); - } - } - } - - static void run(lua_State* L) - { - const char* file, *source; - file = bootscript.file; - source = bootscript.source; - jin_log_info("Run boot script \"%s\".", file); - luax_clearstack(L); - if (luax_loadbuffer(L, source, strlen(source), file) == 0) - { - luax_call(L, 0, 0); - } - } - - LUA_EXPORT void boot(lua_State* L, const char* cwd) - { - luax_clearstack(L); - luax_getglobal(L, MODULE_NAME); - luax_newtable(L); - luax_setfieldstring(L, "cwd", cwd); - luax_setfield(L, -2, "args"); - luax_clearstack(L); - embed(L); - run(L); - } - - } // namespace Lua -} // namespace JinEngine
\ No newline at end of file |