diff options
Diffstat (limited to 'src/libjin-lua/modules/time/je_lua_timer.cpp')
-rw-r--r-- | src/libjin-lua/modules/time/je_lua_timer.cpp | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/src/libjin-lua/modules/time/je_lua_timer.cpp b/src/libjin-lua/modules/time/je_lua_timer.cpp deleted file mode 100644 index e30baab..0000000 --- a/src/libjin-lua/modules/time/je_lua_timer.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include "common/je_lua_callback.h" -#include "common/je_lua_common.h" -#include "je_lua_timer.h" - -using namespace JinEngine::Time; - -namespace JinEngine -{ - namespace Lua - { - - const char* Jin_Lua_Timer = "Timer"; - - const char* Jin_Lua_Handler = "Handler"; - - static Timer::TimerCallback timerCallback = [](void* data)->void - { - LuaCallback* func = static_cast<LuaCallback*>(data); - func->call(); - }; - - static Timer::FinishCallback finishCallback = [](void* data)->void - { - LuaCallback* func = static_cast<LuaCallback*>(data); - delete func; - }; - - LUA_IMPLEMENT inline Timer* checkTimer(lua_State* L) - { - LuaObject* luaObj = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Timer); - return luaObj->getObject<Timer>(); - } - - // timer:every(time, callback, parameter) - LUA_IMPLEMENT int l_every(lua_State* L) - { - int n = luax_gettop(L); - Timer* shared = checkTimer(L); - float s = luax_checknumber(L, 2); - LuaCallback* func = new LuaCallback(L); - func->setFunc(3); - for(int i = 4; i <= n; ++i) - func->pushParam(i); - Timer::Handler* handler = shared->every(s, timerCallback, func, finishCallback); - Shared* shrHandler = new Shared(handler); - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Handler, shrHandler); - return 1; - } - - // timer:after(time, callback, parameter) - LUA_IMPLEMENT int l_after(lua_State* L) - { - int n = luax_gettop(L); - Timer* shared = checkTimer(L); - float s = luax_checknumber(L, 2); - LuaCallback* func = new LuaCallback(L); - func->setFunc(3); - for (int i = 4; i <= n; ++i) - func->pushParam(i); - Timer::Handler* handler = shared->after(s, timerCallback, func, finishCallback); - Shared* shrHandler = new Shared(handler); - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Handler, shrHandler); - return 1; - } - - // timer:repeat(time, callback, parameter) - LUA_IMPLEMENT int l_repeat(lua_State* L) - { - int n = luax_gettop(L); - Timer* shared = checkTimer(L); - float s = luax_checknumber(L, 2); - int count = luax_checkinteger(L, 3); - LuaCallback* func = new LuaCallback(L); - func->setFunc(4); - for (int i = 5; i <= n; ++i) - func->pushParam(i); - Timer::Handler* handler = shared->repeat(s, count, timerCallback, func, finishCallback); - Shared* shrHandler = new Shared(handler); - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Handler, shrHandler); - return 1; - } - - LUA_IMPLEMENT int l_update(lua_State* L) - { - Timer* shared = checkTimer(L); - float s = luax_checknumber(L, 2); - shared->update(s); - return 0; - } - - LUA_IMPLEMENT int l_cancel(lua_State* L) - { - LuaObject* p = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Timer); - Timer* timer = p->getObject<Timer>(); - LuaObject* ph = (LuaObject*)luax_checktype(L, 2, Jin_Lua_Handler); - Timer::Handler* handler = ph->getObject<Timer::Handler>(); - timer->cancel(handler); - return 0; - } - - LUA_IMPLEMENT int l_cancelAll(lua_State* L) - { - LuaObject* p = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Timer); - Timer* timer = p->getObject<Timer>(); - timer->cancelAll(); - return 0; - } - - LUA_IMPLEMENT int l_gc(lua_State* L) - { - LuaObject* p = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Timer); - p->release(); - return 0; - } - - LUA_EXPORT void luaopen_Timer(lua_State* L) - { - luaL_Reg methods[] = { - { "__gc", l_gc }, - { "every", l_every }, - { "after", l_after }, - { "duplicate", l_repeat }, - { "update", l_update }, - { "cancel", l_cancel }, - { "cancelAll", l_cancelAll }, - { 0, 0 } - }; - luax_newtype(L, Jin_Lua_Timer, methods); - } - - } -}
\ No newline at end of file |