diff options
Diffstat (limited to 'src/lua/modules/time/je_lua_time.cpp')
| -rw-r--r-- | src/lua/modules/time/je_lua_time.cpp | 71 | 
1 files changed, 71 insertions, 0 deletions
| diff --git a/src/lua/modules/time/je_lua_time.cpp b/src/lua/modules/time/je_lua_time.cpp new file mode 100644 index 0000000..39ec899 --- /dev/null +++ b/src/lua/modules/time/je_lua_time.cpp @@ -0,0 +1,71 @@ +#include "SDL2/SDL.h" +#include "lua/common/je_lua_common.h" +#include "lua/modules/luax.h" +#include "libjin/jin.h" + + +#include "je_lua_timer.h" + +using namespace JinEngine::Time; + +namespace JinEngine +{ +    namespace Lua +    { + +        static struct +        { +            float previous;  +            float current; +        } context; + +        LUA_IMPLEMENT int l_sec(lua_State* L) +        { +            luax_pushnumber(L, getSecond());  +            return 1; +        } + +        LUA_IMPLEMENT int l_sleep(lua_State* L) +        { +            double sec = luax_checknumber(L, 1); +            sleep(sec * 1000.0f); +            return 0; +        } + +        LUA_IMPLEMENT int l_newTimer(lua_State* L) +        { +            Proxy* proxy = luax_newinstance(L, Jin_Lua_Timer); +            proxy->bind(new Shared<Timer>(new Timer(), Jin_Lua_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_EXPORT int luaopen_time(lua_State* L) +        { +            luaopen_Timer(L); +            luaL_Reg f[] = { +                { "second",   l_sec      }, +                { "sleep",    l_sleep    }, +                { "newTimer", l_newTimer }, +                { "step",     l_step     }, +                { "getDelta", l_getDelta }, +                { 0,          0          }, +            }; +            luax_newlib(L, f);  +            return 1;  +        } + +    } // namespace Lua +} // namespace JinEngine
\ No newline at end of file | 
