55f7964fbc
It make sure that the menu will be visible when the pause view is started with the character menu selected
150 lines
4.3 KiB
Lua
150 lines
4.3 KiB
Lua
local ParentScreen = require "scenes.overworld.screens.parent"
|
|
local PauseScreen = ParentScreen:extend()
|
|
|
|
local ListBox = require "core.modules.menusystem.listbox"
|
|
local Widget = require "core.modules.menusystem.widgets"
|
|
|
|
local Emblem = require "game.modules.gui.emblem"
|
|
|
|
local menu = require "game.modules.menus.fancy"
|
|
local baseMenu = require "game.modules.menus.parents.menu"
|
|
local baseWidget = require "game.modules.menus.parents.widget"
|
|
|
|
local CharacterMenu = baseMenu:extend()
|
|
local CharacterWidget = baseWidget:extend()
|
|
|
|
local TeamWidget = menu.BaseWidget:extend()
|
|
local ViewWidget = menu.BaseWidget:extend()
|
|
local SaveExitWidget = menu.BaseWidget:extend()
|
|
|
|
local const = require "scenes.overworld.screens.mainmenu.const"
|
|
|
|
function PauseScreen:new(scene, menu, widget)
|
|
self.menuSelected = menu or "main"
|
|
self.widgetSelected = widget
|
|
self.widget = widget
|
|
PauseScreen.super.new(self, scene, "Menu")
|
|
end
|
|
|
|
function PauseScreen:setMenu()
|
|
menu.FancyMenu(self.scene, "main", const.X, const.Y, 108, 10, false)
|
|
TeamWidget(self.scene)
|
|
menu.BaseWidget(self.scene, "main", "Quest", ">")
|
|
ViewWidget(self.scene, "Items", "items")
|
|
menu.BaseWidget(self.scene, "main", "Chao", ">")
|
|
menu.BaseWidget(self.scene, "main", "Encylopedia", ">")
|
|
menu.BaseWidget(self.scene, "main", "Options", ">")
|
|
self.scene.menusystem.menus["main"]:addSubMenu("save", "Save / Exit")
|
|
SaveExitWidget(self.scene, "main", "Resume", false, false)
|
|
|
|
SaveExitWidget(self.scene, "save", "Save game", true, false)
|
|
SaveExitWidget(self.scene, "save", "Save and exit", true, true)
|
|
SaveExitWidget(self.scene, "save", "Exit game", false, true)
|
|
|
|
self.scene.menusystem.menus["main"]:finalize()
|
|
|
|
CharacterMenu(self.scene)
|
|
for i, name in ipairs(game.characters.team) do
|
|
CharacterWidget(self.scene, name)
|
|
end
|
|
self.scene.menusystem.menus["character"].isLocked = true
|
|
|
|
self.scene.menusystem:switchMenu(self.menuSelected)
|
|
self.scene.menusystem.menus["main"].isVisible = true
|
|
if (self.widgetSelected ~= nil) then
|
|
self.scene.menusystem.menus[self.menuSelected].widget.selected = self.widgetSelected
|
|
end
|
|
end
|
|
|
|
function PauseScreen:draw()
|
|
|
|
end
|
|
|
|
-- Character menu
|
|
function CharacterMenu:new(scene)
|
|
local x = const.X + 136
|
|
local w = const.WIDTH - x + 28
|
|
CharacterMenu.super.new(self, scene, "character", x, const.Y, w, const.HEIGHT, 4)
|
|
end
|
|
|
|
function CharacterMenu:cancelAction()
|
|
self.scene.menusystem:switchMenu("main")
|
|
end
|
|
|
|
-- Hero custom widget
|
|
--
|
|
function CharacterWidget:new(scene, name)
|
|
self.charName = name
|
|
self.emblem = Emblem(game.characters.list[name], scene)
|
|
self.font2 = scene.assets.fonts["hudnbrs_small"]
|
|
CharacterWidget.super.new(self, scene, "character")
|
|
end
|
|
|
|
function CharacterWidget:drawCanvas()
|
|
local character = game.characters.list[self.charName]
|
|
self.font:setFilter("shadow")
|
|
local debut = 0
|
|
local xDebut = 32
|
|
self.font:draw(character.fullname, xDebut, debut, -1, "left")
|
|
local yLvl = debut + 16
|
|
local xLvl = xDebut
|
|
self.scene.assets.images["lvl"]:draw(xLvl, yLvl)
|
|
self.scene.assets.images["exp"]:draw(xLvl, yLvl + 10)
|
|
self.font2:print(character.level, xLvl + 19, yLvl, "left")
|
|
local expString = character.exp .. "/" .. character.exp_next
|
|
self.font2:print(expString, xLvl + 19, yLvl + 10, "left")
|
|
--text, x, y, limit, align
|
|
end
|
|
|
|
function CharacterWidget:draw(x, y)
|
|
self.emblem:draw(x, y+6)
|
|
if self.canvas.texture ~= nil then
|
|
love.graphics.draw(self.canvas.texture, x - self.ox, y - self.oy)
|
|
end
|
|
end
|
|
|
|
function CharacterWidget:action()
|
|
self.scene.screens.mainmenu.character(self.scene, self.charName)
|
|
end
|
|
|
|
-- Team Widget
|
|
--
|
|
|
|
function TeamWidget:new(scene)
|
|
TeamWidget.super.new(self, scene, "main", "Team", ">")
|
|
end
|
|
|
|
function TeamWidget:action()
|
|
self.scene.menusystem.menus["character"]:getFocus()
|
|
end
|
|
|
|
-- View Widget
|
|
function ViewWidget:new(scene, name, view)
|
|
TeamWidget.super.new(self, scene, "main", name, ">")
|
|
self.nextView = view
|
|
end
|
|
|
|
function ViewWidget:action()
|
|
self.scene.screens.mainmenu[self.nextView](self.scene)
|
|
end
|
|
|
|
-- Save & Exit Widget
|
|
function SaveExitWidget:new(scene, menu, name, save, exit)
|
|
SaveExitWidget.super.new(self, scene, menu, name, "")
|
|
self.exit = exit
|
|
self.save = save
|
|
end
|
|
|
|
function SaveExitWidget:action()
|
|
if (self.save) then
|
|
game:write()
|
|
end
|
|
if (self.exit) then
|
|
scenes.debug.menu()
|
|
else
|
|
self.scene:unpause()
|
|
end
|
|
end
|
|
|
|
return PauseScreen
|