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 - 12, const.Y, 108, 8, false) TeamWidget(self.scene) menu.BaseWidget(self.scene, "main", "Quest", ">") menu.BaseWidget(self.scene, "main", "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) 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 + 124 local w = const.WIDTH - x + 32 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