diff options
author | chai <chaifix@163.com> | 2018-11-12 08:04:11 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-11-12 08:04:11 +0800 |
commit | 72e45f0062d727cedd576d1e1251f6722454a119 (patch) | |
tree | 736594b79e71c66a668d99d96c3ce464618e50ca /src/lua/modules/time/je_lua_time.cpp | |
parent | 7c2f33bdf37de7acf9b0728a115377081344db1c (diff) |
*修改代码结构
Diffstat (limited to 'src/lua/modules/time/je_lua_time.cpp')
-rw-r--r-- | src/lua/modules/time/je_lua_time.cpp | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/src/lua/modules/time/je_lua_time.cpp b/src/lua/modules/time/je_lua_time.cpp index c9f3563..e565eab 100644 --- a/src/lua/modules/time/je_lua_time.cpp +++ b/src/lua/modules/time/je_lua_time.cpp @@ -2,6 +2,7 @@ #include "lua/common/je_lua_common.h" #include "lua/modules/luax.h" #include "libjin/jin.h" +#include "../types.h" using namespace JinEngine::Time; @@ -10,6 +11,12 @@ namespace JinEngine namespace Lua { + static struct + { + float previous; + float current; + } context; + LUA_IMPLEMENT int l_sec(lua_State* L) { luax_pushnumber(L, getSecond()); @@ -18,19 +25,46 @@ namespace JinEngine LUA_IMPLEMENT int l_sleep(lua_State* L) { - double sec = luax_checknumber(L, 1); + double sec = luax_checknumber(L, 1); sleep(sec * 1000.0f); - return 0; + return 0; + } + + LUA_IMPLEMENT int l_newTimer(lua_State* L) + { + Proxy* proxy = luax_newinstance(L, JIN_TIME_TIMER); + proxy->bind(new Shared<Timer>(new Timer(), JIN_TIME_TIMER)); + return 1; + } + + LUA_IMPLEMENT int l_getDelta(lua_State* L) + { + luax_pushnumber(L, context.current - context.previous); + return 1; + } + + LUA_IMPLEMENT int l_step(lua_State* L) + { + context.previous = context.current; + context.current = getSecond(); + return 0; } LUA_IMPLEMENT const luaL_Reg f[] = { - { "second", l_sec }, - { "sleep", l_sleep }, - { 0, 0 }, + { "second", l_sec }, + { "sleep", l_sleep }, + { "newTimer", l_newTimer }, + { "step", l_step }, + { "getDelta", l_getDelta }, + { 0, 0 }, }; + LUA_PORT int luaopen_Timer(lua_State* L); + LUA_EXPORT int luaopen_time(lua_State* L) { + luaopen_Timer(L); + luax_newlib(L, f); return 1; } |