diff options
author | chai <chaifix@163.com> | 2018-12-07 20:17:10 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-12-07 20:17:10 +0800 |
commit | 39f653eb882dffa2f69209d192093f23588ff176 (patch) | |
tree | 22ba778f6c8832f257d1792912877331ee347b2d /src/lua/je_lua_jin.cpp | |
parent | 354507a4970874bf658ac00fb5d2388c46332fd3 (diff) |
*修改文件名
Diffstat (limited to 'src/lua/je_lua_jin.cpp')
-rw-r--r-- | src/lua/je_lua_jin.cpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/lua/je_lua_jin.cpp b/src/lua/je_lua_jin.cpp new file mode 100644 index 0000000..3e80015 --- /dev/null +++ b/src/lua/je_lua_jin.cpp @@ -0,0 +1,104 @@ +#include "common/je_lua.h" +#include "common/je_lua_common.h" +#include "modules/je_lua_modules.h" +#include "embed/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; + } + + LUA_IMPLEMENT const luax_Str s[] = { + { "version", VERSION }, + { "author", AUTHOR }, + { "codename", CODE_NAME }, + { 0, 0 } + }; + + LUA_IMPLEMENT const luax_Num n[] = { + { "revision", REVISION }, + { 0, 0 } + }; + + // Register jin module, keep it on the top of stack. + LUA_EXPORT void open(lua_State* L) + { + luax_globaltable(L, MODULE_NAME); + + // 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); + } + + LUA_EXPORT void boot(lua_State* L, const char* cwd) + { + luax_getglobal(L, MODULE_NAME); + luax_newtable(L); + luax_setfieldstring(L, "cwd", cwd); + luax_setfield(L, -2, "args"); + Embed::load(L); + luax_clearstack(L); + Embed::run(L); + } + + } // namespace Lua +} // namespace JinEngine
\ No newline at end of file |