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() function PauseScreen:new(scene, menu, widget) self.menuSelected = menu or "main" self.widgetSelected = widget self.widget = widget PauseScreen.super.new(self, scene) end function PauseScreen:setMenu() menu.FancyMenu(self.scene, "main", 16, 48, 128, 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", ">") menu.BaseWidget(self.scene, "main", "Save / Exit", ">") menu.BaseWidget(self.scene, "main", "Resume", ">") CharacterMenu(self.scene) for i, name in ipairs(game.characters.team) do CharacterWidget(self.scene, name) end self.scene.menusystem.menus[self.menuSelected]:getFocus() if (self.widgetSelected ~= nil) then self.scene.menusystem.menus[self.menuSelected].widget.selected = self.widgetSelected end end function PauseScreen:draw() self.scene.assets.fonts["SA2font"]:print("MAIN MENU", 158, 16) end -- Character menu function CharacterMenu:new(scene) CharacterMenu.super.new(self, scene, "character", 168, 40, 248, 168, 4) end function CharacterMenu:cancelAction() self.scene.menusystem.menus["main"]:getFocus() 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 return PauseScreen