Replaced RoomData's hooks with Initialize API function
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
local mapSaver = {}
|
local mapSaver = {}
|
||||||
|
function mapSaver.Load(region)
|
||||||
|
--empty
|
||||||
|
end
|
||||||
|
function mapSaver.Save(region)
|
||||||
|
--empty
|
||||||
|
end
|
||||||
--TODO: create a flexible saving & loading system
|
--TODO: create a flexible saving & loading system
|
||||||
return mapSaver
|
return mapSaver
|
||||||
@@ -26,5 +26,6 @@ dumpTable(roomSystem.RoomManager)
|
|||||||
dumpTable(roomSystem.Room)
|
dumpTable(roomSystem.Room)
|
||||||
|
|
||||||
local overworld = roomSystem.RoomManager.CreateRoom("overworld")
|
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")
|
print("Finished the lua script")
|
||||||
|
|||||||
+12
-30
@@ -53,46 +53,28 @@ static int getPager(lua_State* L) {
|
|||||||
return 1;
|
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) {
|
//set the refs of these parameters (backwards, since it pops from the top of the stack)
|
||||||
RoomData* room = reinterpret_cast<RoomData*>(lua_touserdata(L, 1));
|
room->GetPager()->SetUnloadReference(luaL_ref(L, LUA_REGISTRYINDEX));
|
||||||
luaL_unref(L, LUA_REGISTRYINDEX, room->GetLoadReference());
|
room->GetPager()->SetCreateReference(luaL_ref(L, LUA_REGISTRYINDEX));
|
||||||
room->SetLoadReference(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;
|
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[] = {
|
static const luaL_Reg roomLib[] = {
|
||||||
{"GetPager",getPager},
|
{"GetPager",getPager},
|
||||||
{"SetRoomName", setRoomName},
|
{"SetRoomName", setRoomName},
|
||||||
{"GetRoomName", getRoomName},
|
{"GetRoomName", getRoomName},
|
||||||
{"SetTileset", setTilesetName},
|
{"SetTileset", setTilesetName},
|
||||||
{"GetTileset", getTilesetName},
|
{"GetTileset", getTilesetName},
|
||||||
{"SetOnLoad", setLoadReference},
|
{"Initialize", initialize},
|
||||||
{"GetOnLoad", getLoadReference},
|
|
||||||
{"SetOnUnload", setUnloadReference},
|
|
||||||
{"GetOnUnload", getUnloadReference},
|
|
||||||
{nullptr, nullptr}
|
{nullptr, nullptr}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -44,19 +44,3 @@ RegionPagerLua* RoomData::GetPager() {
|
|||||||
std::list<Entity*>* RoomData::GetEntityList() {
|
std::list<Entity*>* RoomData::GetEntityList() {
|
||||||
return &entityList;
|
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();
|
RegionPagerLua* GetPager();
|
||||||
std::list<Entity*>* GetEntityList();
|
std::list<Entity*>* GetEntityList();
|
||||||
|
|
||||||
//hooks
|
|
||||||
int SetLoadReference(int);
|
|
||||||
int GetLoadReference();
|
|
||||||
int SetUnloadReference(int);
|
|
||||||
int GetUnloadReference();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class RoomManager;
|
friend class RoomManager;
|
||||||
|
|
||||||
@@ -64,11 +58,6 @@ private:
|
|||||||
|
|
||||||
RegionPagerLua pager;
|
RegionPagerLua pager;
|
||||||
std::list<Entity*> entityList;
|
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
|
#endif
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
#include "room_manager.hpp"
|
#include "room_manager.hpp"
|
||||||
|
|
||||||
int createRoom(lua_State* L) {
|
int createRoom(lua_State* L) {
|
||||||
|
|
||||||
//create & get the room
|
//create & get the room
|
||||||
RoomManager& roomMgr = RoomManager::GetSingleton();
|
RoomManager& roomMgr = RoomManager::GetSingleton();
|
||||||
int uid = roomMgr.Create("",""); //TODO: All new managers need their internals fleshed out
|
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
|
//setup the room
|
||||||
//TODO: room parameters only set via lua, fix this
|
//TODO: room parameters only set via lua, fix this
|
||||||
room->SetRoomName(lua_tostring(L, 1));
|
room->SetRoomName(lua_tostring(L, 1));
|
||||||
room->SetTilesetName(lua_tostring(L, 2));
|
// room->SetTilesetName(lua_tostring(L, 2));
|
||||||
|
|
||||||
//return room, uid
|
//return room, uid
|
||||||
lua_pushlightuserdata(L, static_cast<void*>(room));
|
lua_pushlightuserdata(L, static_cast<void*>(room));
|
||||||
|
|||||||
Reference in New Issue
Block a user