From 6485839dcf9c5a87cff625efc2aaca7b8f07d915 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Wed, 26 Nov 2014 06:33:02 +1100 Subject: [PATCH] Replaced RoomData's hooks with Initialize API function --- rsc/scripts/map_saver.lua | 6 +++++ rsc/scripts/setup_server.lua | 1 + server/rooms/room_api.cpp | 42 +++++++++---------------------- server/rooms/room_data.cpp | 16 ------------ server/rooms/room_data.hpp | 11 -------- server/rooms/room_manager_api.cpp | 3 ++- 6 files changed, 21 insertions(+), 58 deletions(-) diff --git a/rsc/scripts/map_saver.lua b/rsc/scripts/map_saver.lua index 6ec65fd..0d7431f 100644 --- a/rsc/scripts/map_saver.lua +++ b/rsc/scripts/map_saver.lua @@ -1,3 +1,9 @@ local mapSaver = {} +function mapSaver.Load(region) + --empty +end +function mapSaver.Save(region) + --empty +end --TODO: create a flexible saving & loading system return mapSaver \ No newline at end of file diff --git a/rsc/scripts/setup_server.lua b/rsc/scripts/setup_server.lua index 71ebf50..3b4c46b 100644 --- a/rsc/scripts/setup_server.lua +++ b/rsc/scripts/setup_server.lua @@ -26,5 +26,6 @@ dumpTable(roomSystem.RoomManager) dumpTable(roomSystem.Room) local overworld = roomSystem.RoomManager.CreateRoom("overworld") +roomSystem.Room.Initialize(overworld, "overworld.bmp", mapSaver.Load, mapSaver.Save, mapMaker.debugIsland, mapSaver.Save) print("Finished the lua script") diff --git a/server/rooms/room_api.cpp b/server/rooms/room_api.cpp index e443bf8..6edcc38 100644 --- a/server/rooms/room_api.cpp +++ b/server/rooms/room_api.cpp @@ -53,46 +53,28 @@ static int getPager(lua_State* L) { return 1; } -//TODO: GetEntityList? +static int initialize(lua_State* L) { + //set the members of the given room + RoomData* room = static_cast(lua_touserdata(L, 1)); + room->SetRoomName(lua_tostring(L, 2)); -static int setLoadReference(lua_State* L) { - RoomData* room = reinterpret_cast(lua_touserdata(L, 1)); - luaL_unref(L, LUA_REGISTRYINDEX, room->GetLoadReference()); - room->SetLoadReference(luaL_ref(L, LUA_REGISTRYINDEX)); + //set the refs of these parameters (backwards, since it pops from the top of the stack) + room->GetPager()->SetUnloadReference(luaL_ref(L, LUA_REGISTRYINDEX)); + room->GetPager()->SetCreateReference(luaL_ref(L, LUA_REGISTRYINDEX)); + room->GetPager()->SetSaveReference(luaL_ref(L, LUA_REGISTRYINDEX)); + room->GetPager()->SetLoadReference(luaL_ref(L, LUA_REGISTRYINDEX)); + + //more parameters can be added here later return 0; } -static int getLoadReference(lua_State* L) { - RoomData* room = reinterpret_cast(lua_touserdata(L, 1)); - lua_pushinteger(L, room->GetLoadReference()); - lua_gettable(L, LUA_REGISTRYINDEX); - return 1; -} - -static int setUnloadReference(lua_State* L) { - RoomData* room = reinterpret_cast(lua_touserdata(L, 1)); - luaL_unref(L, LUA_REGISTRYINDEX, room->GetUnloadReference()); - room->SetUnloadReference(luaL_ref(L, LUA_REGISTRYINDEX)); - return 0; -} - -static int getUnloadReference(lua_State* L) { - RoomData* room = reinterpret_cast(lua_touserdata(L, 1)); - lua_pushinteger(L, room->GetUnloadReference()); - lua_gettable(L, LUA_REGISTRYINDEX); - return 1; -} - static const luaL_Reg roomLib[] = { {"GetPager",getPager}, {"SetRoomName", setRoomName}, {"GetRoomName", getRoomName}, {"SetTileset", setTilesetName}, {"GetTileset", getTilesetName}, - {"SetOnLoad", setLoadReference}, - {"GetOnLoad", getLoadReference}, - {"SetOnUnload", setUnloadReference}, - {"GetOnUnload", getUnloadReference}, + {"Initialize", initialize}, {nullptr, nullptr} }; diff --git a/server/rooms/room_data.cpp b/server/rooms/room_data.cpp index 7fb9061..e21b439 100644 --- a/server/rooms/room_data.cpp +++ b/server/rooms/room_data.cpp @@ -44,19 +44,3 @@ RegionPagerLua* RoomData::GetPager() { std::list* RoomData::GetEntityList() { return &entityList; } - -int RoomData::SetLoadReference(int i) { - return loadRef = i; -} - -int RoomData::GetLoadReference() { - return loadRef; -} - -int RoomData::SetUnloadReference(int i) { - return unloadRef = i; -} - -int RoomData::GetUnloadReference() { - return unloadRef; -} \ No newline at end of file diff --git a/server/rooms/room_data.hpp b/server/rooms/room_data.hpp index 78612fe..069e84c 100644 --- a/server/rooms/room_data.hpp +++ b/server/rooms/room_data.hpp @@ -49,12 +49,6 @@ public: RegionPagerLua* GetPager(); std::list* GetEntityList(); - //hooks - int SetLoadReference(int); - int GetLoadReference(); - int SetUnloadReference(int); - int GetUnloadReference(); - private: friend class RoomManager; @@ -64,11 +58,6 @@ private: RegionPagerLua pager; std::list entityList; - - //lua references - //TODO: use RoomData's lua references for load and unload functions - int loadRef = LUA_NOREF; - int unloadRef = LUA_NOREF; }; #endif diff --git a/server/rooms/room_manager_api.cpp b/server/rooms/room_manager_api.cpp index 880022f..7225a75 100644 --- a/server/rooms/room_manager_api.cpp +++ b/server/rooms/room_manager_api.cpp @@ -24,6 +24,7 @@ #include "room_manager.hpp" int createRoom(lua_State* L) { + //create & get the room RoomManager& roomMgr = RoomManager::GetSingleton(); int uid = roomMgr.Create("",""); //TODO: All new managers need their internals fleshed out @@ -32,7 +33,7 @@ int createRoom(lua_State* L) { //setup the room //TODO: room parameters only set via lua, fix this room->SetRoomName(lua_tostring(L, 1)); - room->SetTilesetName(lua_tostring(L, 2)); +// room->SetTilesetName(lua_tostring(L, 2)); //return room, uid lua_pushlightuserdata(L, static_cast(room));