2021-09-16 20:42:34 +02:00
|
|
|
local RadianceMenu = require "birb.modules.gui.menus.listbox"
|
|
|
|
local RadianceWidget = require "birb.modules.gui.menus.widgets.base"
|
2021-04-05 12:05:51 +02:00
|
|
|
local SaveMenu = RadianceMenu:extend()
|
|
|
|
local SaveWidget = RadianceWidget:extend()
|
|
|
|
|
|
|
|
local gui = require "game.modules.gui"
|
|
|
|
|
2021-05-05 08:30:32 +02:00
|
|
|
local defTransitions = require "birb.modules.transitions"
|
2021-04-05 12:29:45 +02:00
|
|
|
local radTransitions = require "game.modules.transitions"
|
2021-04-05 12:05:51 +02:00
|
|
|
|
|
|
|
local HPADDING = 68
|
2022-01-05 18:26:05 +01:00
|
|
|
local VPADDING = 30
|
2021-04-05 12:05:51 +02:00
|
|
|
|
2021-09-16 20:42:34 +02:00
|
|
|
function SaveMenu:new()
|
2021-04-05 12:05:51 +02:00
|
|
|
local w, h = 424 - (HPADDING * 2), 240 - (VPADDING * 2)
|
|
|
|
|
2021-09-16 20:42:34 +02:00
|
|
|
SaveMenu.super.new(self, "save", 424/2, 240/2, w, h, 3)
|
|
|
|
self.ox = w/2
|
|
|
|
self.oy = h/2
|
|
|
|
self.sx = 0.8
|
|
|
|
self.sy = 0.8
|
|
|
|
self.opacity = 0
|
2021-04-05 12:05:51 +02:00
|
|
|
local metadata = game:getMetadata()
|
|
|
|
for i, save in ipairs(metadata) do
|
|
|
|
SaveWidget(self.scene, i, save)
|
|
|
|
end
|
2022-01-05 18:26:05 +01:00
|
|
|
self.textBox = gui.newTextBox("assets/gui/dialogbox.png", w - 8, self.widgetSize.h - 4)
|
2021-09-16 20:42:34 +02:00
|
|
|
self.isVisible = true
|
2021-04-05 12:05:51 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
function SaveMenu:cancelAction()
|
2021-09-16 20:42:34 +02:00
|
|
|
self:playSFX("back")
|
|
|
|
self.gui:playScreenTransform("titleScreen", "hideMenu")
|
|
|
|
self:looseFocus()
|
2021-04-05 12:05:51 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
function SaveWidget:new(scene, saveid, savedata)
|
2021-09-16 20:42:34 +02:00
|
|
|
SaveWidget.super.new(self, "save")
|
2021-04-05 12:05:51 +02:00
|
|
|
self.saveid = saveid
|
|
|
|
self.savedata = savedata
|
|
|
|
self.emeralds = gui.getEmeraldsTexture(self.savedata.emeralds)
|
|
|
|
end
|
|
|
|
|
|
|
|
function SaveWidget:drawCanvas()
|
|
|
|
local basex, basey = 4, 2
|
|
|
|
love.graphics.draw(self.menu.textBox, basex, basey)
|
|
|
|
if (self.savedata.exist) then
|
|
|
|
local str = "Save " .. self.saveid
|
|
|
|
str = str .. "(" .. utils.math.numberToString(self.savedata.completion,3) .. "%)"
|
|
|
|
str = str .. " - " .. utils.time.toString(self.savedata.gametime)
|
|
|
|
str = str .. "\n"
|
|
|
|
str = str .. self.savedata.location .. "\n"
|
|
|
|
str = str .. "Rings: " .. self.savedata.rings
|
2021-09-16 20:42:34 +02:00
|
|
|
self.assets.fonts["small"]:draw(str, basex + 8, basey + 4)
|
2021-04-05 12:05:51 +02:00
|
|
|
|
|
|
|
for i, charName in ipairs(self.savedata.team) do
|
2021-05-15 21:43:15 +02:00
|
|
|
local data = core.datas:get("characters", charName)
|
2021-04-05 12:05:51 +02:00
|
|
|
local x = 18*(#self.savedata.team - i + 1) + 4 + basex
|
|
|
|
self.scene.assets.tileset["charicons"]:drawTile(data.icon,self.width - x, basey + 4)
|
|
|
|
end
|
|
|
|
|
|
|
|
love.graphics.draw(self.emeralds, basex + 168, basey + 21)
|
|
|
|
else
|
2021-09-16 20:42:34 +02:00
|
|
|
self.assets.fonts["small"]:draw("New save", basex + 8, basey + 4)
|
2021-04-05 12:05:51 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function SaveWidget:action()
|
|
|
|
game:read(self.saveid)
|
2021-08-15 16:26:05 +02:00
|
|
|
core.screen:startTransition(radTransitions.borders, defTransitions.circle, function() scenes.menus.main() end, 424/2, 240/2)
|
2021-04-05 12:05:51 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
return SaveMenu
|