local Scene = require "core.modules.scenes" local menu = require "scenes.debug.menu.menu" local DebugMenu = Scene:extend() local panels = require "scenes.debug.menu.infopanel" function DebugMenu:new() DebugMenu.super.new(self) self.assets:batchImport("scenes.debug.commons.assets") menu.commons.DebugMenu(self, "BaseMenu") menu.commons.SceneWidget(self, "BaseMenu", scenes.title, "Launch Game") self:buildBattleMenu() self:buildOverworldMenu() self:buildSaveMenu() self:buildOtherMenu() menu.commons.SceneWidget(self, "BaseMenu", scenes.options, "Options") menu.ExitWidget(self, "BaseMenu") self.menusystem:activate() self.menusystem:switchMenu("BaseMenu") self.panel = panels.Gamedata() end function DebugMenu:buildOverworldMenu() self:addSubMenu("overworld", "BaseMenu", "Overworld") menu.commons.SceneWidget(self, "overworld", scenes.overworld, "Launch Overworld") menu.commons.SubMenuWidget(self, "overworld", "BaseMenu", "Back") end function DebugMenu:buildBattleMenu() self:addSubMenu("combat", "BaseMenu", "Battle System") menu.commons.SceneWidget(self, "combat", scenes.cbs, "Launch Battle") menu.commons.SceneWidget(self, "combat", scenes.debug.viewers.battleBack, "Background Viewer") menu.commons.SubMenuWidget(self, "combat", "BaseMenu", "Back") end function DebugMenu:buildSaveMenu() self:addSubMenu("save", "BaseMenu", "Save System") self:addSubMenu("characters", "save", "Characters") self:addSubMenu("team", "save", "Team Formation", panels.Team, nil) menu.ChangeLeaderWidget(self, "team") for name, data in pairs(game.characters.list) do self:addCharacterMenu(name, data) menu.AddRemoveWidget(self, "team", data) end self:addSubMenu("load", "save", "Load Saves") for i=1, game.slotNumber do menu.LoadWidget(self, "load", i) end menu.SaveWidget(self, "save") menu.commons.SubMenuWidget(self, "save", "BaseMenu", "Back") menu.commons.SubMenuWidget(self, "characters", "save", "Back") menu.commons.SubMenuWidget(self, "load", "save", "Back") menu.SubMenuWidget(self, "team", "save", "Back", panels.Gamedata, nil) end function DebugMenu:addCharacterMenu(name, data) self:addSubMenu(name, "characters", data.fullname, panels.Character, data) menu.LevelUpWidget(self, name, data) menu.SubMenuWidget(self, name, "characters", "Back", panels.Gamedata, nil) end function DebugMenu:buildOtherMenu() self:addSubMenu("other", "BaseMenu", "Other gameplay") self:addSubMenu("battle", "other", "Sonic Battle Maps") local mapList = require "datas.gamedata.maps.battle" for i, name in ipairs(mapList) do local mapData = require("datas.gamedata.maps.battle." .. name) local trueName = mapData.name menu.commons.SceneWidget(self, "battle", scenes.test, trueName, name) end menu.commons.SceneWidget(self, "other", scenes.test2, "Shadow Shot Maps") menu.commons.SubMenuWidget(self, "battle", "other", "Back") menu.commons.SubMenuWidget(self, "other", "BaseMenu", "Back") end function DebugMenu:update(dt) if (love.keyboard.isDown("space") and (not self.menusystem.isActive)) then self.menusystem:activate() end end function DebugMenu:addSubMenu(submenu, parent, name, panel, panelArgument) local parent = parent or "BaseMenu" menu.commons.DebugMenu(self, submenu) if (panel == nil) then menu.commons.SubMenuWidget(self, parent, submenu, name .. " >") else menu.SubMenuWidget(self, parent, submenu, name .. " >", panel, panelArgument) end end function DebugMenu:draw() if (self.menusystem.isActive) then self.assets.fonts["small"]:print("## SONIC RADIANCE - DEBUG MENU ##", 424/2, 8, "center") self.assets.fonts["small"]:print("v" .. game.version, 424 - 8, 240 - 22, "right") self.panel:draw(240, 48) end end return DebugMenu;