level serializes now

This commit is contained in:
0x81c 2015-03-16 10:17:06 -04:00
parent 7fa31726f4
commit d76ace8f69
2 changed files with 81 additions and 12 deletions

View file

@ -18,6 +18,7 @@ function Room:initialize(t)
self.player = {}
self.switches = { red = {}, green = {}, blue = {} }
self.switchMatrices = {}
self.doors = {}
self.collideables = { red = {}, green = {}, blue = {} }
self.collidableMatrices = {} --{red = {{...}{...}{...}}, ...
@ -25,7 +26,6 @@ function Room:initialize(t)
self.player[color] = Player:new(t.player.x, t.player.y, color)
end
self.doors = {}
self.activeColors = {}
for _, color in ipairs(t.player.activeColors) do self.activeColors[color] = true end
@ -434,6 +434,22 @@ function Room:getPlayerPos(color)
return self.player[color]:getGridPos()
end
function Room:getPlayerObject(color)
return self.player[color]
end
function Room:getDoors()
return self.doors
end
function Room:getCollideables()
return self.collideables
end
function Room:getSwitches()
return self.switches
end
function Room:switchCheck()
local doorsToUnlock = {}
for color, switchArray in pairs(self.switches) do
@ -472,11 +488,47 @@ function Room:nextRoomCheck()
end
function Room:save()
self:serialize()
local name = self.name
local level = TSerial.pack(self:serialize(), nil, true)
print(level)
--write level to file
end
function Room:serialize()
local level = {}
level.player = {}
for _, color in ipairs(self:getInactiveColors()) do
level.player[color] = self:getPlayerObject(color):getSerializationTable()
end
level.doors = {}
for _, door in pairs(self:getDoors()) do
table.insert(level.door, doors:getSerializationTable())
end
for color, collideableArray in pairs(self:getCollideables()) do
for _, collideable in pairs(collideableArray) do
if not collideable:isInstanceOf("Door") then --for now, we might change doors up some
local entityClass = string.lower(collideable:getClass())
print(entityClass)
if not level[entityClass] then level[entityClass] = {} end
if not level[entityClass][color] then level[entityClass][color] = {} end
table.insert(level[entityClass][color], collideable:getSerializationTable())
end
end
end
level.switches = {}
for color, switchArray in pairs(self:getSwitches()) do
level.switches[color] = {}
for _, switch in ipairs(switchArray) do
table.insert(level.switches[color], switch:getSerializationTable())
end
end
return level
end
function nextRoom(pos)