sonic-radiance/sonic-radiance.love/scenes/menus/titlescreen/menu.lua
2021-08-15 16:26:05 +02:00

69 lines
2.4 KiB
Lua

local RadianceMenu = require "game.modules.menus.parents.menu"
local RadianceWidget = require "game.modules.menus.parents.widget"
local SaveMenu = RadianceMenu:extend()
local SaveWidget = RadianceWidget:extend()
local gui = require "game.modules.gui"
local defTransitions = require "birb.modules.transitions"
local radTransitions = require "game.modules.transitions"
local HPADDING = 68
local VPADDING = 28
function SaveMenu:new(scene)
local w, h = 424 - (HPADDING * 2), 240 - (VPADDING * 2)
SaveMenu.super.new(self, scene, "save", HPADDING, VPADDING + 1, w, h, 3)
local metadata = game:getMetadata()
for i, save in ipairs(metadata) do
SaveWidget(self.scene, i, save)
end
self.textBox = gui.newTextBox("assets/gui/dialogbox.png", w - 8, (h / 3))
end
function SaveMenu:cancelAction()
self.scene.assets:playSFX("mBack")
self.scene.menusystem:reset()
self.scene.haveMenu = false
end
function SaveWidget:new(scene, saveid, savedata)
SaveWidget.super.new(self, scene, "save")
self.scene.menusystem:switchMenu("save")
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
self.font:draw(str, basex + 8, basey + 4)
for i, charName in ipairs(self.savedata.team) do
local data = core.datas:get("characters", charName)
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
self.font:draw("New save", basex + 8, basey + 4)
end
end
function SaveWidget:action()
self.scene.assets:playSFX("mSelect")
game:read(self.saveid)
core.screen:startTransition(radTransitions.borders, defTransitions.circle, function() scenes.menus.main() end, 424/2, 240/2)
end
return SaveMenu