Replaced RoomData's hooks with Initialize API function

This commit is contained in:
Kayne Ruse
2014-11-26 06:33:02 +11:00
parent 81a3a92603
commit 6485839dcf
6 changed files with 21 additions and 58 deletions
+12 -30
View File
@@ -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<RoomData*>(lua_touserdata(L, 1));
room->SetRoomName(lua_tostring(L, 2));
static int setLoadReference(lua_State* L) {
RoomData* room = reinterpret_cast<RoomData*>(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<RoomData*>(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<RoomData*>(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<RoomData*>(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}
};
-16
View File
@@ -44,19 +44,3 @@ RegionPagerLua* RoomData::GetPager() {
std::list<Entity*>* 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;
}
-11
View File
@@ -49,12 +49,6 @@ public:
RegionPagerLua* GetPager();
std::list<Entity*>* 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<Entity*> entityList;
//lua references
//TODO: use RoomData's lua references for load and unload functions
int loadRef = LUA_NOREF;
int unloadRef = LUA_NOREF;
};
#endif
+2 -1
View File
@@ -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<void*>(room));