Replaced RoomData's hooks with Initialize API function
This commit is contained in:
+12
-30
@@ -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}
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user