Rewrite planemap and idalloc in pure C++
This commit is contained in:
45
luprex/syscpp/world.cpp
Normal file
45
luprex/syscpp/world.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
#include "world.hpp"
|
||||
#include "idalloc.hpp"
|
||||
|
||||
LuaDefineType(World);
|
||||
|
||||
World::~World() {
|
||||
}
|
||||
|
||||
void World::init(lua_State *L) {
|
||||
LuaVar world;
|
||||
LuaStack LS(L, world);
|
||||
LS.newpointer(world, new World, false);
|
||||
LS.setfield(LuaRegistry, "world", world);
|
||||
}
|
||||
|
||||
World *World::fetch(lua_State *L) {
|
||||
LuaVar world;
|
||||
LuaStack LS(L, world);
|
||||
LS.getfield(world, LuaRegistry, "world");
|
||||
World *w = LS.ckuserdata<World>(world);
|
||||
LS.result();
|
||||
return w;
|
||||
}
|
||||
|
||||
LuaDefine(world_init, "c") {
|
||||
World::init(L);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LuaDefine(world_setid, "c") {
|
||||
LuaArg id;
|
||||
LuaStack LS(L, id);
|
||||
World *w = World::fetch(L);
|
||||
w->id_ = LS.ckinteger(id);
|
||||
return LS.result();
|
||||
}
|
||||
|
||||
LuaDefine(world_getid, "c") {
|
||||
LuaRet id;
|
||||
LuaStack LS(L, id);
|
||||
World *w = World::fetch(L);
|
||||
LS.set(id, w->id_);
|
||||
return LS.result();
|
||||
};
|
||||
Reference in New Issue
Block a user