1 /*
2 script/lua_api/l_nodetimer.h
3 Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4 */
5 
6 /*
7 This file is part of Freeminer.
8 
9 Freeminer is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13 
14 Freeminer  is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with Freeminer.  If not, see <http://www.gnu.org/licenses/>.
21 */
22 
23 #ifndef L_NODETIMER_H_
24 #define L_NODETIMER_H_
25 
26 #include "lua_api/l_base.h"
27 #include "irr_v3d.h"
28 
29 class ServerEnvironment;
30 
31 class NodeTimerRef : public ModApiBase {
32 private:
33 	v3s16 m_p;
34 	ServerEnvironment *m_env;
35 
36 	static const char className[];
37 	static const luaL_reg methods[];
38 
39 	static int gc_object(lua_State *L);
40 
41 	static NodeTimerRef *checkobject(lua_State *L, int narg);
42 
43 	static int l_set(lua_State *L);
44 
45 	static int l_start(lua_State *L);
46 
47 	static int l_stop(lua_State *L);
48 
49 	static int l_is_started(lua_State *L);
50 
51 	static int l_get_timeout(lua_State *L);
52 
53 	static int l_get_elapsed(lua_State *L);
54 
55 public:
56 	NodeTimerRef(v3s16 p, ServerEnvironment *env);
57 	~NodeTimerRef();
58 
59 	// Creates an NodeTimerRef and leaves it on top of stack
60 	// Not callable from Lua; all references are created on the C side.
61 	static void create(lua_State *L, v3s16 p, ServerEnvironment *env);
62 
63 	static void set_null(lua_State *L);
64 
65 	static void Register(lua_State *L);
66 };
67 
68 
69 
70 #endif /* L_NODETIMER_H_ */
71