sonic-radiance/sonic-radiance.love/scenes/overworld/screens/mainmenu/character/init.lua
2021-04-11 10:32:49 +02:00

95 lines
2.7 KiB
Lua

local ParentScreen = require "scenes.overworld.screens.parent"
local CharacterScreen = ParentScreen:extend()
local menu = require "game.modules.menus.fancy"
local gui = require "game.modules.gui"
local const = require "scenes.overworld.screens.mainmenu.const"
local BasicPage = require "scenes.overworld.screens.mainmenu.character.basicpage"
local pageList = {BasicPage}
local ReturnWidget = menu.BaseWidget:extend()
function CharacterScreen:new(scene, character)
self.character = game.characters.list[character]
self.charName = character
self.page = BasicPage(self, character)
self.pageIndex = 1
self.artwork = love.graphics.newImage("datas/gamedata/characters/" .. character .. "/artwork.png")
self.artworkOrigin = require("datas.gamedata.characters." .. character .. ".artwork")
CharacterScreen.super.new(self, scene, self.character.name)
end
function CharacterScreen:update(dt)
local keys = self.scene:getKeys(1)
if (keys["left"].isPressed) then
self:setPage(self.pageIndex - 1)
end
if (keys["right"].isPressed) then
self:setPage(self.pageIndex + 1)
end
end
function CharacterScreen:setPage(newPageIndex)
local newPageIndex = newPageIndex or 1
if (newPageIndex > #pageList) then
newPageIndex = 1
end
if (newPageIndex < 1) then
newPageIndex = #pageList
end
self.pageIndex = newPageIndex
self.page = pageList[self.pageIndex](self, self.charName)
self.scene.menusystem:reset()
self:setMenu()
end
function CharacterScreen:setMenu()
local itemNumber = 1
local y = const.Y2 - (16*itemNumber) + 2
menu.FancyMenu(self.scene, "menu", const.X2 - 128 - 14, y, 128, 1, false)
self.page:getMenuWidgets()
--menu.BaseWidget(self.scene, "equip", "Change talent", ">")
--menu.BaseWidget(self.scene, "equip", "Battle skills", ">")
--menu.BaseWidget(self.scene, "equip", "Equipement", ">")
ReturnWidget(self.scene, self.charName)
self.scene.menusystem:switchMenu("menu")
self.scene.menusystem.menus["menu"]:getFocus()
self.scene.menusystem.menus["menu"]:setCancelWidget()
end
function CharacterScreen:draw()
self.scene.assets.fonts["small"]:setLineHeight(16/18)
if (self.page ~= nil) then
self.page:draw()
end
end
function CharacterScreen:drawBackground()
love.graphics.draw(self.artwork, self.artworkOrigin.x, self.artworkOrigin.y)
end
-- Widgets
function ReturnWidget:new(scene, charName)
self.charName = charName
ReturnWidget.super.new(self, scene, "menu", "Back", "")
end
function ReturnWidget:action()
for i, name in ipairs(game.characters.team) do
if (name == self.charName) then
self.widgetSelected = i
end
end
self.scene.assets:playSFX("mBack")
self.scene.screens.mainmenu["pause"](self.scene, "character", self.widgetSelected)
end
return CharacterScreen