finished rewriting the room API

This commit is contained in:
Kayne Ruse
2014-10-07 02:08:00 +11:00
parent 254b97aa80
commit 869780589f
4 changed files with 69 additions and 78 deletions
+18 -48
View File
@@ -30,74 +30,44 @@
//-------------------------
int RoomManager::Create() {
/* //create the room
RoomData* newRoom =
newRoom->pager.SetLuaState(luaState);
//register the room
roomMap[counter] = newRoom;
//API hook
lua_getglobal(luaState, TORTUGA_ROOM_NAME);
lua_getfield(luaState, -1, "Create");
lua_pushlightuserdata(luaState, newRoom);
if (lua_pcall(luaState, 1, 0, 0) != LUA_OK) {
throw(std::runtime_error(std::string() + "Lua error: " + lua_tostring(luaState, -1) ));
}
lua_pop(luaState, 1);
//create the room
RoomData* newRoom = &elementMap[counter]; //implicitly constructs the element
newRoom->pager.SetLuaState(lua);
//finish the routine
*/ return counter++;
return counter++;
}
int RoomManager::Load() {
//TODO: RoomManageR::Load()
//TODO: RoomManager::Load()
return -1;
}
int RoomManager::Save(int uid) {
//TODO: RoomManageR::Save(uid)
//TODO: RoomManager::Save(uid)
return -1;
}
void RoomManager::Unload(int uid) {
/* //find the room
RoomData* room = elementMap.find(uid);
if (room == elementMap.end()) {
//find the room
std::map<int, RoomData>::iterator it = elementMap.find(uid);
if (it == elementMap.end()) {
return;
}
//API hook
lua_getglobal(luaState, TORTUGA_ROOM_NAME);
lua_getfield(luaState, -1, "Unload");
lua_pushlightuserdata(luaState, room);
if (lua_pcall(luaState, 1, 0, 0) != LUA_OK) {
throw(std::runtime_error(std::string() + "Lua error: " + lua_tostring(luaState, -1) ));
}
lua_pop(luaState, 1);
//free the memory
delete room;
roomMap.erase(uid);
*/}
elementMap.erase(uid);
}
void RoomManager::Delete(int uid) {
//
//TODO: RoomManager::Delete(int uid)
//NOTE: aliased to RoomManager::Unload(int uid)
Unload(uid);
}
void RoomManager::UnloadAll() {
/* lua_getglobal(luaState, TORTUGA_ROOM_NAME);
for (auto& it : roomMap) {
//API hook
lua_getfield(luaState, -1, "Unload");
lua_pushlightuserdata(luaState, it.second);
if (lua_pcall(luaState, 1, 0, 0) != LUA_OK) {
throw(std::runtime_error(std::string() + "Lua error: " + lua_tostring(luaState, -1) ));
}
}
lua_pop(luaState, 1);
roomMap.clear();
*/}
elementMap.clear();
}
void RoomManager::UnloadIf(std::function<bool(std::pair<const int,RoomData>)> fn) {
std::map<int, RoomData>::iterator it = elementMap.begin();