aboutsummaryrefslogtreecommitdiff
path: root/src/libjin-lua/modules/time/je_lua_timer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin-lua/modules/time/je_lua_timer.cpp')
-rw-r--r--src/libjin-lua/modules/time/je_lua_timer.cpp132
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