76 lines
2.3 KiB
Lua
76 lines
2.3 KiB
Lua
|
local ListBox = require "core.modules.menusystem.listbox"
|
||
|
local Widget = require "core.modules.menusystem.widgets"
|
||
|
|
||
|
local MenuConstructor = Object:extend()
|
||
|
local CharacterMenu = require "scenes.battlesystem.menus.battlemenu"
|
||
|
local widgets = require "scenes.battlesystem.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")
|
||
|
self:addSubMenu("BaseMenu", "SkillMenu", "Skills")
|
||
|
self:addSubMenu("BaseMenu", "ObjectMenu", "Objects")
|
||
|
widgets.ActionWidget(character, "BaseMenu", "defend")
|
||
|
widgets.ActionWidget(character, "BaseMenu", "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
|