]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/script/lua_api/l_nodetimer.cpp
Merge pull request #10 from corarona/master
[dragonfireclient.git] / src / script / lua_api / l_nodetimer.cpp
index c81a7ebc978c9acbbf1a25eb5ba598ab5d0cebfe..c2df52c0523983c30fd6c7a1b516b7742e796468 100644 (file)
@@ -19,7 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "lua_api/l_nodetimer.h"
 #include "lua_api/l_internal.h"
-#include "environment.h"
+#include "serverenvironment.h"
 #include "map.h"
 
 
@@ -39,94 +39,68 @@ NodeTimerRef* NodeTimerRef::checkobject(lua_State *L, int narg)
 
 int NodeTimerRef::l_set(lua_State *L)
 {
+       MAP_LOCK_REQUIRED;
        NodeTimerRef *o = checkobject(L, 1);
-       ServerEnvironment *env = o->m_env;
-       if(env == NULL) return 0;
-       f32 t = luaL_checknumber(L,2);
-       f32 e = luaL_checknumber(L,3);
-       env->getMap().setNodeTimer(o->m_p,NodeTimer(t,e));
+       f32 t = readParam<float>(L,2);
+       f32 e = readParam<float>(L,3);
+       o->m_map->setNodeTimer(NodeTimer(t, e, o->m_p));
        return 0;
 }
 
 int NodeTimerRef::l_start(lua_State *L)
 {
+       MAP_LOCK_REQUIRED;
        NodeTimerRef *o = checkobject(L, 1);
-       ServerEnvironment *env = o->m_env;
-       if(env == NULL) return 0;
-       f32 t = luaL_checknumber(L,2);
-       env->getMap().setNodeTimer(o->m_p,NodeTimer(t,0));
+       f32 t = readParam<float>(L,2);
+       o->m_map->setNodeTimer(NodeTimer(t, 0, o->m_p));
        return 0;
 }
 
 int NodeTimerRef::l_stop(lua_State *L)
 {
+       MAP_LOCK_REQUIRED;
        NodeTimerRef *o = checkobject(L, 1);
-       ServerEnvironment *env = o->m_env;
-       if(env == NULL) return 0;
-       env->getMap().removeNodeTimer(o->m_p);
+       o->m_map->removeNodeTimer(o->m_p);
        return 0;
 }
 
 int NodeTimerRef::l_is_started(lua_State *L)
 {
+       MAP_LOCK_REQUIRED;
        NodeTimerRef *o = checkobject(L, 1);
-       ServerEnvironment *env = o->m_env;
-       if(env == NULL) return 0;
-
-       NodeTimer t = env->getMap().getNodeTimer(o->m_p);
+       NodeTimer t = o->m_map->getNodeTimer(o->m_p);
        lua_pushboolean(L,(t.timeout != 0));
        return 1;
 }
 
 int NodeTimerRef::l_get_timeout(lua_State *L)
 {
+       MAP_LOCK_REQUIRED;
        NodeTimerRef *o = checkobject(L, 1);
-       ServerEnvironment *env = o->m_env;
-       if(env == NULL) return 0;
-
-       NodeTimer t = env->getMap().getNodeTimer(o->m_p);
+       NodeTimer t = o->m_map->getNodeTimer(o->m_p);
        lua_pushnumber(L,t.timeout);
        return 1;
 }
 
 int NodeTimerRef::l_get_elapsed(lua_State *L)
 {
+       MAP_LOCK_REQUIRED;
        NodeTimerRef *o = checkobject(L, 1);
-       ServerEnvironment *env = o->m_env;
-       if(env == NULL) return 0;
-
-       NodeTimer t = env->getMap().getNodeTimer(o->m_p);
+       NodeTimer t = o->m_map->getNodeTimer(o->m_p);
        lua_pushnumber(L,t.elapsed);
        return 1;
 }
 
-
-NodeTimerRef::NodeTimerRef(v3s16 p, ServerEnvironment *env):
-       m_p(p),
-       m_env(env)
-{
-}
-
-NodeTimerRef::~NodeTimerRef()
-{
-}
-
 // Creates an NodeTimerRef and leaves it on top of stack
 // Not callable from Lua; all references are created on the C side.
-void NodeTimerRef::create(lua_State *L, v3s16 p, ServerEnvironment *env)
+void NodeTimerRef::create(lua_State *L, v3s16 p, ServerMap *map)
 {
-       NodeTimerRef *o = new NodeTimerRef(p, env);
+       NodeTimerRef *o = new NodeTimerRef(p, map);
        *(void **)(lua_newuserdata(L, sizeof(void *))) = o;
        luaL_getmetatable(L, className);
        lua_setmetatable(L, -2);
 }
 
-void NodeTimerRef::set_null(lua_State *L)
-{
-       NodeTimerRef *o = checkobject(L, -1);
-       o->m_env = NULL;
-}
-
 void NodeTimerRef::Register(lua_State *L)
 {
        lua_newtable(L);
@@ -156,7 +130,7 @@ void NodeTimerRef::Register(lua_State *L)
 }
 
 const char NodeTimerRef::className[] = "NodeTimerRef";
-const luaL_reg NodeTimerRef::methods[] = {
+const luaL_Reg NodeTimerRef::methods[] = {
        luamethod(NodeTimerRef, start),
        luamethod(NodeTimerRef, set),
        luamethod(NodeTimerRef, stop),