sonic-radiance/sonic-radiance.love/scenes/battlesystem/gui/menus/controller.lua
2021-08-15 20:45:15 +02:00

72 lines
2.2 KiB
Lua

local MenuConstructor = Object:extend()
local CharacterMenu = require "scenes.battlesystem.gui.menus.battlemenu"
local widgets = require "scenes.battlesystem.gui.menus.widgets"
function MenuConstructor:new( controller )
self.scene = controller
end
function MenuConstructor:reconstruct(character)
core.debug:print("cbs/menu", "Reconstructing the menu")
self.scene.menusystem:reset()
self:build(character)
self.scene.menusystem:switchMenu("BaseMenu")
end
function MenuConstructor:build(character)
core.debug:print("cbs/menu", "Building the menu")
self:buildBaseMenu(character)
self:buildSkillMenu(character)
self:buildObjectMenu(character)
self.scene.menusystem.menus["BaseMenu"]:finalize()
self.scene.menusystem:setSoundFromSceneAssets("mBeep")
self.scene.menusystem:activate()
end
function MenuConstructor:buildBaseMenu(character)
CharacterMenu(self.scene, "BaseMenu")
widgets.ActionWidget(character, "BaseMenu", "attack", "Attack")
self:addSubMenu("BaseMenu", "SkillMenu", "Skills")
self:addSubMenu("BaseMenu", "ObjectMenu", "Objects")
widgets.ActionWidget(character, "BaseMenu", "defend", "Defend")
widgets.ActionWidget(character, "BaseMenu", "flee", "Flee")
end
function MenuConstructor:set(currentCharacter)
self:reconstruct(currentCharacter)
end
function MenuConstructor:buildSkillMenu(character)
local list = character.abstract.skills
for k, skill in pairs(list) do
widgets.SkillWidget(character, "SkillMenu", skill.name, "")
end
--SubMenuWidget(character, "SkillMenu", "back", "BaseMenu")
self.scene.menusystem.menus["SkillMenu"]:setCancelWidget()
end
function MenuConstructor:buildObjectMenu(character)
for i,pocket in ipairs(game.loot.inventory) do
if (pocket.inBattle) then
CharacterMenu(self.scene, pocket.name)
self:addSubMenu("ObjectMenu", pocket.name, pocket.fullname)
for j,itemData in ipairs(pocket.list) do
widgets.ItemWidget(character, pocket.name, itemData.name)
end
end
end
self.scene.menusystem.menus["ObjectMenu"]:setCancelWidget()
end
function MenuConstructor:addSubMenu(menu, submenu, widgetName)
self.scene.menusystem.menus[menu]:addSubMenu(submenu, widgetName)
end
function MenuConstructor:unset( )
self.isActive = false
end
return MenuConstructor