diff --git a/sonic-radiance.love/game/modules/menus/fancy.lua b/sonic-radiance.love/game/modules/menus/fancy.lua new file mode 100644 index 0000000..9c98d89 --- /dev/null +++ b/sonic-radiance.love/game/modules/menus/fancy.lua @@ -0,0 +1,74 @@ +local List = require "game.modules.menus.list" + +local fancy = {} +fancy.FancyMenu = List.ListMenu:extend() +fancy.BaseWidget = List.CenteredWidget:extend() +fancy.SubMenuWidget = fancy.BaseWidget:extend() + +local MENU_ITEM_HEIGHT = 17 + +local gui = require "game.modules.gui" + +function fancy.FancyMenu:new(scene, name, x, y, w, itemNumber, haveBiseau) + fancy.FancyMenu.super.new(self, scene, name, x, y, w, itemNumber, false) + self.haveBiseau = haveBiseau +end + +function fancy.FancyMenu:getCursorPosition() + if (self.haveBiseau) then + local addition = MENU_ITEM_HEIGHT + local x = self.x + 4 + ((self.cursorTransition) * addition)/2 + local y = self.y + ((self.cursorTransition) * addition) + return x, y + else + return fancy.FancyMenu.super.getCursorPosition(self) + end +end + +function fancy.FancyMenu:getNextPosition(x, y, h) + if (self.haveBiseau) then + return (x + (h/2)), y+h + else + return fancy.FancyMenu.super.getNextPosition(self, x, y, h) + end +end + +function fancy.FancyMenu:clone(name) + return fancy.FancyMenu(self.scene, name, self.x, self.y, self.w, self.itemNumber, self.haveBiseau) +end + +function fancy.FancyMenu:addSubMenuWidget(newmenu, name) + fancy.SubMenuWidget(self.scene, self.name, newmenu, name) +end + +-- FancyWidgets +-- Add Fancy Widgets +function fancy.BaseWidget:new(scene, menu_name, label, label2) + self.label2 = label2 + fancy.BaseWidget.super.new(self, scene, menu_name, label) + self.box = gui.newChoiceBack(self.menu.w + 24) +end + +function fancy.BaseWidget:drawCanvas() + love.graphics.draw(self.box, 0, 0) + local h = math.floor(self.height / 2) - (self.font:getHeight() / 2) - 1 + self.font:draw(self.label, 16, h, -1, "left") + self.font:draw(self.label2, self.width -8, h, -1, "right") +end + +-- Widget de sous-menu +function fancy.SubMenuWidget:new(scene, menu_name, newmenu, label) + local label2 = "" + if (label ~= "Back") then + label2 = ">" + end + fancy.SubMenuWidget.super.new(self, scene, menu_name, label, label2) + self.newmenu = newmenu +end + +function fancy.SubMenuWidget:action() + self.scene.menusystem:switchMenu(self.newmenu) + self.scene.menusystem.menus[self.newmenu]:activationAction() +end + +return fancy diff --git a/sonic-radiance.love/game/modules/menus/list.lua b/sonic-radiance.love/game/modules/menus/list.lua index 531e95d..c93c814 100644 --- a/sonic-radiance.love/game/modules/menus/list.lua +++ b/sonic-radiance.love/game/modules/menus/list.lua @@ -17,20 +17,17 @@ function list.ListMenu:new(scene, name, x, y, w, itemNumber, isBoxed) list.ListMenu.super.new(self, scene, name, x, y, w, h, itemNumber) self.cursorTexture = love.graphics.newImage("assets/gui/cursor-menulist.png") self.cursorTransition = 0 - self.parent = "" self.submenus = {} self.itemNumber = itemNumber self.isBoxed = isBoxed if (self.isBoxed) then - self.box = gui.newTextBox("assets/gui/dialogbox.png", w+16, h+16) + self.box = gui.newTextBox("assets/gui/dialogbox.png", w, h+16) end end function list.ListMenu:addSubMenu(name, nicerName) - print("adding submenu", name, "to", self.name) local submenu = self:clone(name) - submenu:setAsSubmenu(self.name) self:addSubMenuWidget(name, nicerName) table.insert(self.submenus, name) end @@ -39,16 +36,15 @@ function list.ListMenu:addSubMenuWidget(newmenu, name) list.SubMenuWidget(self.scene, self.name, newmenu, name) end -function list.ListMenu:finalize() - print("finalizing", self.name) - if (self.parent ~= "") then - self:addSubMenuWidget(self.parent, "Back") +function list.ListMenu:finalize(parent) + if (parent ~= "" and parent ~= nil) then + self:addSubMenuWidget(parent, "Back") self:setCancelWidget() end for i,name in ipairs(self.submenus) do if (self.menusystem.menus[name] ~= nil) then - self.menusystem.menus[name]:finalize() + self.menusystem.menus[name]:finalize(self.name) end end end @@ -57,14 +53,6 @@ function list.ListMenu:clone(name) return list.ListMenu(self.scene, name, self.x, self.y, self.w, self.itemNumber, self.isBoxed) end -function list.ListMenu:getSubmenuWidget() - return nil -end - -function list.ListMenu:setAsSubmenu(parent) - self.parent = parent -end - function list.ListMenu:update(dt) list.ListMenu.super.update(self, dt) self:updateCursorPosition(dt) @@ -90,14 +78,14 @@ end function list.ListMenu:getCursorPosition() local addition = MENU_ITEM_HEIGHT - local x = self.x + 4 - local y = self.y + ((self.cursorTransition) * addition) + local x = self.x + 6 + local y = self.y + ((self.cursorTransition) * addition) - 1 return x, y end function list.ListMenu:draw() if (self.isBoxed) then - love.graphics.draw(self.box, self.x - 8, self.y - 8) + love.graphics.draw(self.box, self.x, self.y - 8) end self:updateView() local widgety = self.y @@ -132,7 +120,7 @@ function list.CenteredWidget:new(scene, menu_name, label) end function list.CenteredWidget:drawCanvas() - local h = math.floor(self.height / 2) - (self.font:getHeight() / 2) + local h = math.floor(self.height / 2) - (self.font:getHeight() / 2) - 1 self.font:draw(self.label, self.width / 2, h, -1, "center") end @@ -144,8 +132,8 @@ end function list.DualTextWidget:drawCanvas() local h = math.floor(self.height / 2) - (self.font:getHeight() / 2) - self.font:draw(self.label, 0, h, -1, "left") - self.font:draw(self.label2, self.width, h, -1, "right") + self.font:draw(self.label, 16, h, -1, "left") + self.font:draw(self.label2, self.width - 8, h, -1, "right") end -- Widget de sous-menu diff --git a/sonic-radiance.love/game/modules/menus/parents/widget.lua b/sonic-radiance.love/game/modules/menus/parents/widget.lua new file mode 100644 index 0000000..0bd30bc --- /dev/null +++ b/sonic-radiance.love/game/modules/menus/parents/widget.lua @@ -0,0 +1,13 @@ +local Widget = require "core.modules.menusystem.widgets" +local RadianceWidget = Widget.Text:extend() + +function RadianceWidget:new(scene, name, label) + self.scene = scene + local label = label or "" + local font = scene.assets.fonts["small"] + font:setFilter("shadow") + local widgetMenu = scene.menusystem.menus[name] + RadianceWidget.super.new(self, widgetMenu, font, label) +end + +return RadianceWidget diff --git a/sonic-radiance.love/scenes/battlesystem/init.lua b/sonic-radiance.love/scenes/battlesystem/init.lua index ce3980b..2fa39e3 100644 --- a/sonic-radiance.love/scenes/battlesystem/init.lua +++ b/sonic-radiance.love/scenes/battlesystem/init.lua @@ -3,7 +3,7 @@ local Scene = require "core.modules.scenes" local BattleSystem = Scene:extend() local World = require "scenes.battlesystem.world" -local MenuSystem = require "scenes.battlesystem.menu" +local MenuSystem = require "scenes.battlesystem.menus.controller" local Turns = require "scenes.battlesystem.controllers" local VictoryScreen = require "scenes.battlesystem.screens.victory" diff --git a/sonic-radiance.love/scenes/battlesystem/menu.lua b/sonic-radiance.love/scenes/battlesystem/menu.lua deleted file mode 100644 index 78aca25..0000000 --- a/sonic-radiance.love/scenes/battlesystem/menu.lua +++ /dev/null @@ -1,309 +0,0 @@ -local ListBox = require "core.modules.menusystem.listbox" -local Widget = require "core.modules.menusystem.widgets" - -local MenuConstructor = Object:extend() -local CharacterMenu = ListBox:extend() - -local BattleWidget = Widget.Text:extend() -local ActionWidget = BattleWidget:extend() -local SubMenuWidget = BattleWidget:extend() -local BackMenuWidget = BattleWidget:extend() -local SkillWidget = BattleWidget:extend() -local ItemWidget = BattleWidget:extend() - -local MENUPOS_X1, MENUPOS_X2, MENUPOS_Y = 88, 32, 72 -local MENU_WIDTH, MENU_ITEM_HEIGHT = 180, 17 -local MENU_ITEM_NUMBER = 6 - -gui = require "game.modules.gui" - -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:setSoundFromSceneAssets("mBeep") - self.scene.menusystem:activate() -end - -function MenuConstructor:buildBaseMenu(character) - CharacterMenu(self.scene, "BaseMenu", MENUPOS_X1 - 16, MENUPOS_Y) - ActionWidget(character, "BaseMenu", "attack") - SubMenuWidget(character, "BaseMenu", "skills", "SkillMenu") - SubMenuWidget(character, "BaseMenu", "objects", "ObjectMenu") - ActionWidget(character, "BaseMenu", "defend") - ActionWidget(character, "BaseMenu", "flee") -end - -function MenuConstructor:set(currentCharacter) - self:reconstruct(currentCharacter) -end - -function MenuConstructor:buildSkillMenu(character) - CharacterMenu(self.scene, "SkillMenu", MENUPOS_X1 - 16, MENUPOS_Y) - local list = character.abstract.skills - for k, skill in pairs(list) do - SkillWidget(character, "SkillMenu", skill.name, "") - end - SubMenuWidget(character, "SkillMenu", "back", "BaseMenu") - - self.scene.menusystem.menus["SkillMenu"]:setCancelWidget() -end - -function MenuConstructor:buildObjectMenu(character) - CharacterMenu(self.scene, "ObjectMenu", MENUPOS_X1 - 16, MENUPOS_Y) - - for i,pocket in ipairs(game.loot.inventory) do - if (pocket.inBattle) then - CharacterMenu(self.scene, pocket.name, MENUPOS_X1 - 16, MENUPOS_Y) - SubMenuWidget(character, "ObjectMenu", pocket.fullname, pocket.name) - for j,itemData in ipairs(pocket.list) do - ItemWidget(character, pocket.name, itemData.name) - end - SubMenuWidget(character, pocket.name, "back", "ObjectMenu") - self.scene.menusystem.menus[pocket.name]:setCancelWidget() - end - end - - SubMenuWidget(character, "ObjectMenu", "back", "BaseMenu") - - self.scene.menusystem.menus["ObjectMenu"]:setCancelWidget() -end - - -function MenuConstructor:unset( ) - self.isActive = false -end - --- CHARACTER_MENU --- The actuals menus in the character menu - -function CharacterMenu:new(scene, name, x, y) - self.scene = scene - local w, h = MENU_WIDTH, MENU_ITEM_NUMBER * MENU_ITEM_HEIGHT - CharacterMenu.super.new(self, scene.menusystem, name, x, y, w, h, MENU_ITEM_NUMBER) - self.cursorTexture = love.graphics.newImage("assets/gui/cursor-menulist.png") - self.cursorTransition = 0 -end - -function CharacterMenu:update(dt) - CharacterMenu.super.update(self, dt) - - local relativecursor = self.widget.selected - self.view.firstSlot - - local transition = self.cursorTransition - relativecursor - - if math.abs(transition) < 0.1 then - self.cursorTransition = relativecursor - else - self.cursorTransition = (self.cursorTransition) + ((relativecursor) - (self.cursorTransition)) * dt*45 - end - -end - -function CharacterMenu:drawCursor() - local addition = 17 - local x = self.x + 4 + ((self.cursorTransition) * addition * 0.5) - local y = self.y + ((self.cursorTransition) * addition) - love.graphics.draw(self.cursorTexture, x, y) -end - -function CharacterMenu:draw() - self:updateView() - local widgety = self.y - local widgetx = self.x - for i,v in ipairs(self.widget.list) do - if (i >= self.view.firstSlot) and (i < self.view.firstSlot + self.view.slotNumber) then - v:draw(widgetx, widgety, self.w, self.widget.h) - if self.widget.selected == i and self:haveFocus() == true then - v:drawSelected(widgetx, widgety, self.w, self.widget.h) - else - v:draw(widgetx, widgety, self.w, self.widget.h) - end - widgety = widgety + self.widget.h - widgetx = widgetx + (self.widget.h/2) - end - end -end - --- WIDGETS --- All widgets used by the Characters menus - --- Basic Battle Widget --- The base used by all battle widgets - -function BattleWidget:new(character, menu_name, label1, label2, translationdata) - local menu = self:getControllers(character, menu_name) - - local translationdata = translationdata or "battle" - local label1 = label1 or "" - local label2 = label2 or "" - label1 = core.lang:translate(translationdata, label1) - - local font = self.assets.fonts["small"] - - BattleWidget.super.new(self, menu, font, label1) - - self.back = gui.newChoiceBack( (MENU_WIDTH - 16) ) - - self.label2 = label2 -end - -function BattleWidget:getControllers(character, menu_name) - self.character = character or core.debug:error("cbs/widget", "character must not be nil") - - self.scene = self.character.turnSystem.scene - self.assets = self.character.assets - self.menusystem = self.scene.menusystem - - self.menuname = menu_name - - local menu = self.menusystem.menus[menu_name] or error("menu " ..menu_name .. " doesn't exist") - - return menu -end - --- Internal functions - -function BattleWidget:update(dt) - BattleWidget.super.update(self, dt) -end - -function BattleWidget:selectAction() - -- Rien de base, à voir ensuite comment je gère -end - -function BattleWidget:drawCanvas() - love.graphics.draw(self.back, 0, 0) - - h = math.floor(self.height / 2) - (self.font:getHeight() / 2) - 1 - love.graphics.setColor(0, 0, 0, .8) - self.font:print(self.label, 17, h, "left") - self.font:print(self.label2, self.width - 48 + 1, h, "right") - utils.graphics.resetColor() - self.font:print(self.label, 16, h, "left") - self.font:print(self.label2, self.width - 48, h, "right") -end - -function BattleWidget:action() - self.scene:flushKeys() - self.scene.menusystem:deactivate() - - self:sendCharacterData() -end - --- External functions - -function BattleWidget:sendCharacterData() - self.character:doNothing() -end - --- ActionWidget --- The basic action widget - -function ActionWidget:new(character, menu_name, action) - self.actionType = action or "" - ActionWidget.super.new(self, character, menu_name, action, "") -end - -function ActionWidget:sendCharacterData() - self.character:doBasicAction(self.actionType) -end - --- SubMenuWidget --- A simple widget to change menu - -function SubMenuWidget:new(character, menu_name, label, newmenu) - local label2 = "" - self.sfx = "mBack" - if label ~= "back" then - label2 = ">" - self.sfx = "mBeep" - end - SubMenuWidget.super.new(self, character, menu_name, label, label2) - self.newmenu = newmenu or "BaseMenu" -end - -function SubMenuWidget:action() - self.assets.sfx[self.sfx]:play() - self.scene.menusystem:switchMenu(self.newmenu) -end - --- BackMenuWidget --- Quit the menu - -function BackMenuWidget:new(character, menu_name) - BackMenuWidget.super.new(self, character, menu_name, "back", "") -end - -function BackMenuWidget:sendCharacterData() - self.assets.sfx["mBack"]:play() - self.character:receiveBackSignal() -end - --- SkillWidget --- A widget to handle skills - -function SkillWidget:new(character, menu_name, skill) - self.skillname = skill - local label2 = "00" - - self.skilldata = game.skills:getSkillData(skill) - - if self.skilldata ~= nil then - label2 = self.skilldata.cost or 0 - if label2 < 10 then - label2 = "0" .. label2 - end - end - - SkillWidget.super.new(self, character, menu_name, self.skillname, "-" .. label2, "skills") -end - -function SkillWidget:sendCharacterData() - - if self.skilldata ~= nil then - self.assets.sfx["mSelect"]:play() - self.character:useSkill(self.skillname) - else - core.debug:warning("cbs/menu", "skill " .. self.skillname .. " doesn't exist") - self.character:doNothing() - self.assets.sfx["mError"]:play() - end - -end - --- ItemWidget --- A widget to handle items - -function ItemWidget:new(character, menu_name, item) - self.itemname = item - local label2 = "00" - - self.number = game.loot:getItemNumber(menu_name, item) - self.itemdata = game.loot:getItemData(menu_name, item) - - label2 = self.number - - ItemWidget.super.new(self, character, menu_name, self.itemdata.fullname, "x" .. label2, "skills") -end - -function ItemWidget:sendCharacterData() - self.character:doNothing() - self.assets.sfx["mError"]:play() -end - -return MenuConstructor diff --git a/sonic-radiance.love/scenes/battlesystem/menus/battlemenu.lua b/sonic-radiance.love/scenes/battlesystem/menus/battlemenu.lua new file mode 100644 index 0000000..1de964f --- /dev/null +++ b/sonic-radiance.love/scenes/battlesystem/menus/battlemenu.lua @@ -0,0 +1,19 @@ +local fancy = require "game.modules.menus.fancy" + +local BattleMenu = fancy.FancyMenu:extend() + +local MENUPOS_X1, MENUPOS_Y = 88, 72 +local MENU_WIDTH = 180-24 +local MENU_ITEM_NUMBER = 6 + +function BattleMenu:new(scene, name) + local x, y = MENUPOS_X1, MENUPOS_Y + local w = MENU_WIDTH + BattleMenu.super.new(self, scene, name, x, y, w, MENU_ITEM_NUMBER, true) +end + +function BattleMenu:clone(name) + return BattleMenu(self.scene, name) +end + +return BattleMenu diff --git a/sonic-radiance.love/scenes/battlesystem/menus/controller.lua b/sonic-radiance.love/scenes/battlesystem/menus/controller.lua new file mode 100644 index 0000000..09a49a7 --- /dev/null +++ b/sonic-radiance.love/scenes/battlesystem/menus/controller.lua @@ -0,0 +1,75 @@ +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 diff --git a/sonic-radiance.love/scenes/battlesystem/menus/widgets.lua b/sonic-radiance.love/scenes/battlesystem/menus/widgets.lua new file mode 100644 index 0000000..186ef3a --- /dev/null +++ b/sonic-radiance.love/scenes/battlesystem/menus/widgets.lua @@ -0,0 +1,144 @@ +local fancy = require "game.modules.menus.fancy" + +local widgets = {} + +widgets.BattleWidget = fancy.BaseWidget:extend() +widgets.ActionWidget = widgets.BattleWidget:extend() +widgets.SubMenuWidget = widgets.BattleWidget:extend() +widgets.BackMenuWidget = widgets.BattleWidget:extend() +widgets.SkillWidget = widgets.BattleWidget:extend() +widgets.ItemWidget = widgets.BattleWidget:extend() + +-- WIDGETS +-- All widgets used by the Characters menus + +-- Basic Battle Widget +-- The base used by all battle widgets + +function widgets.BattleWidget:new(character, menu_name, label1, label2) + local label1 = label1 or "" + local label2 = label2 or "" + + self.character = character + local scene = self.character.turnSystem.scene + + widgets.BattleWidget.super.new(self, scene, menu_name, label1, label2) + self.assets = self.scene.assets +end + +-- Internal functions + +function widgets.BattleWidget:selectAction() + -- Rien de base, à voir ensuite comment je gère +end + +function widgets.BattleWidget:action() + self.scene:flushKeys() + self.scene.menusystem:deactivate() + + self:sendCharacterData() +end + +-- External functions + +function widgets.BattleWidget:sendCharacterData() + self.character:doNothing() +end + +-- ActionWidget +-- The basic action widget + +function widgets.ActionWidget:new(character, menu_name, action) + self.actionType = action or "" + widgets.ActionWidget.super.new(self, character, menu_name, action, "") +end + +function widgets.ActionWidget:sendCharacterData() + self.character:doBasicAction(self.actionType) +end + +-- SubMenuWidget +-- A simple widget to change menu + +function widgets.SubMenuWidget:new(character, menu_name, label, newmenu) + local label2 = "" + self.sfx = "mBack" + if label ~= "back" then + label2 = ">" + self.sfx = "mBeep" + end + SubMenuWidget.super.new(self, character, menu_name, label, label2) + self.newmenu = newmenu or "BaseMenu" +end + +function widgets.SubMenuWidget:action() + self.assets.sfx[self.sfx]:play() + self.scene.menusystem:switchMenu(self.newmenu) +end + +-- BackMenuWidget +-- Quit the menu + +function widgets.BackMenuWidget:new(character, menu_name) + BackMenuWidget.super.new(self, character, menu_name, "back", "") +end + +function widgets.BackMenuWidget:sendCharacterData() + self.assets.sfx["mBack"]:play() + self.character:receiveBackSignal() +end + +-- SkillWidget +-- A widget to handle skills + +function widgets.SkillWidget:new(character, menu_name, skill) + self.skillname = skill + local label2 = "00" + + self.skilldata = game.skills:getSkillData(skill) + + if self.skilldata ~= nil then + label2 = self.skilldata.cost or 0 + if label2 < 10 then + label2 = "0" .. label2 + end + end + + widgets.SkillWidget.super.new(self, character, menu_name, self.skillname, "-" .. label2, "skills") +end + +function widgets.SkillWidget:sendCharacterData() + + if self.skilldata ~= nil then + self.assets.sfx["mSelect"]:play() + self.character:useSkill(self.skillname) + else + core.debug:warning("cbs/menu", "skill " .. self.skillname .. " doesn't exist") + self.character:doNothing() + self.assets.sfx["mError"]:play() + end + +end + +-- ItemWidget +-- A widget to handle items + +function widgets.ItemWidget:new(character, menu_name, item) + self.itemname = item + local label2 = "00" + + self.number = game.loot:getItemNumber(menu_name, item) + self.itemdata = game.loot:getItemData(menu_name, item) + + label2 = self.number + + widgets.ItemWidget.super.new(self, character, menu_name, self.itemdata.fullname, "x" .. label2, "skills") +end + +function widgets.ItemWidget:sendCharacterData() + self.character:doNothing() + self.assets.sfx["mError"]:play() +end + + +return widgets