feat: add a save metadata system
This commit is contained in:
parent
6b04e86980
commit
1fb4c72098
2 changed files with 64 additions and 2 deletions
|
@ -53,6 +53,8 @@ function Game:new()
|
||||||
self.flags = {}
|
self.flags = {}
|
||||||
self.destroyedGizmo = {}
|
self.destroyedGizmo = {}
|
||||||
self.variables = {}
|
self.variables = {}
|
||||||
|
self.completion = 0
|
||||||
|
self.mapName = ""
|
||||||
|
|
||||||
self.version = "0.0.0"
|
self.version = "0.0.0"
|
||||||
end
|
end
|
||||||
|
@ -88,6 +90,65 @@ function Game:getData()
|
||||||
return data
|
return data
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Game:getMetadataFile(absolute)
|
||||||
|
local dir = ""
|
||||||
|
if absolute then
|
||||||
|
dir = love.filesystem.getSaveDirectory() .. "/"
|
||||||
|
if not love.filesystem.exists(dir) then
|
||||||
|
love.filesystem.createDirectory( "" )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local filepath = dir .. "metadata.save"
|
||||||
|
|
||||||
|
return filepath
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function Game:getMetadata()
|
||||||
|
local metadata = {}
|
||||||
|
local filepath = self:getMetadataFile(true)
|
||||||
|
if love.filesystem.exists("metadata.save") then
|
||||||
|
metadata = binser.readFile(filepath)[1]
|
||||||
|
else
|
||||||
|
metadata = self:newMetadata()
|
||||||
|
end
|
||||||
|
return metadata
|
||||||
|
end
|
||||||
|
|
||||||
|
function Game:newMetadata()
|
||||||
|
local metadata = {}
|
||||||
|
for i = 1, self.slotNumber, 1 do
|
||||||
|
local newMetadata = {}
|
||||||
|
newMetadata.exist = false
|
||||||
|
newMetadata.completion = 0
|
||||||
|
newMetadata.gametime = 0
|
||||||
|
newMetadata.team = {}
|
||||||
|
newMetadata.rings = 0
|
||||||
|
newMetadata.emeralds = 0
|
||||||
|
newMetadata.location = ""
|
||||||
|
table.insert(metadata, newMetadata)
|
||||||
|
end
|
||||||
|
return metadata
|
||||||
|
end
|
||||||
|
|
||||||
|
function Game:writeMetadata(metadata)
|
||||||
|
local filepath = self:getMetadataFile(true)
|
||||||
|
binser.writeFile(filepath, metadata)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Game:addtoMetadata()
|
||||||
|
local metadata = self:getMetadata()
|
||||||
|
metadata[self.slot].exist = true
|
||||||
|
metadata[self.slot].completion = self.completion
|
||||||
|
metadata[self.slot].gametime = self.gametime
|
||||||
|
metadata[self.slot].team = self.characters.team
|
||||||
|
metadata[self.slot].rings = self.loot.rings
|
||||||
|
metadata[self.slot].emeralds = 0
|
||||||
|
metadata[self.slot].location = self.mapName
|
||||||
|
self:writeMetadata(metadata)
|
||||||
|
end
|
||||||
|
|
||||||
function Game:read(save_id)
|
function Game:read(save_id)
|
||||||
self.slot = save_id
|
self.slot = save_id
|
||||||
if (self.slot > 0) then
|
if (self.slot > 0) then
|
||||||
|
@ -96,17 +157,17 @@ function Game:read(save_id)
|
||||||
local loadedDatas = binser.readFile(filepath)
|
local loadedDatas = binser.readFile(filepath)
|
||||||
|
|
||||||
self:setData(loadedDatas[1])
|
self:setData(loadedDatas[1])
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Game:write(save_id)
|
function Game:write()
|
||||||
if (self.slot > 0) then
|
if (self.slot > 0) then
|
||||||
local data = self:getData()
|
local data = self:getData()
|
||||||
|
|
||||||
local filepath = self:getSaveFile(self.slot, true)
|
local filepath = self:getSaveFile(self.slot, true)
|
||||||
binser.writeFile(filepath, data)
|
binser.writeFile(filepath, data)
|
||||||
|
self:addtoMetadata()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,7 @@ function OverWorld:updateCurrentMap(map)
|
||||||
self:playMapMusic(map)
|
self:playMapMusic(map)
|
||||||
|
|
||||||
self:showMessage(map.name)
|
self:showMessage(map.name)
|
||||||
|
game.mapName = map.name
|
||||||
end
|
end
|
||||||
|
|
||||||
function OverWorld:playMapMusic(map)
|
function OverWorld:playMapMusic(map)
|
||||||
|
|
Loading…
Reference in a new issue