local ParentScreen = require "scenes.overworld.screens.parent" local EquipScreen = ParentScreen:extend() local menu = require "game.modules.menus.list" local const = require "scenes.overworld.screens.mainmenu.const" local gui = require "game.modules.gui" local baseCharacterMenu = require "scenes.overworld.screens.mainmenu.common.charmenu" local baseCharacterWidget = require "scenes.overworld.screens.mainmenu.common.charwidget" local CharacterMenu = baseCharacterMenu:extend() local CharacterWidget = baseCharacterWidget:extend() local STATS = require "datas.stats" local DESC_SIZE = 32 * 6 function EquipScreen:new(scene, category, item, widgetId) self.category = category self.item = item self.itemData = game.loot:getItemData(category, self.item.name) self.widgetId = widgetId self.choiceBack = gui.newChoiceBack(48 + 16) self.descBox = gui.newTextBox("assets/gui/dialogbox.png", DESC_SIZE, 40 + 48+16) self.desc = self.itemData.description self.charName = "" EquipScreen.super.new(self, scene, "Equipement") end function EquipScreen:setMenu() CharacterMenu(self.scene, 224) for i, name in ipairs(game.characters.team) do CharacterWidget(self.scene, name, self.category) end self.scene.menusystem:switchMenu("character") end function EquipScreen:draw() self.scene.assets.fonts["small"]:setLineHeight(16 / 18) self:drawPocket() self:drawDescription(const.X, const.Y) end function EquipScreen:drawDescription(x, y) love.graphics.draw(self.descBox, x, y) local xx, yy, ww = x + 6, y + 4, DESC_SIZE - 12 self.scene.assets.fonts["small"]:draw(self.itemData.fullname, xx, yy, ww, "left") if (self.charName ~= "") then local char = game.characters.list[self.charName] for i, statName in ipairs(STATS.LIST) do local xStat = xx + (((i - 1) % 2) * (ww/2)) local yStat = yy + (math.floor((i-1)/2) * 16) + 24 local middle = xStat + 10 + ww/4 local stat = char.stats[statName] local newStat = char:predictStat(statName, self.category, self.item.name) self.scene.assets.fonts["small"]:draw(STATS.SIMPLENAME[statName], xStat, yStat, ww, "left") self.scene.assets.fonts["small"]:setColor(1, 1, 1, 0.9) self.scene.assets.fonts["small"]:draw(stat .. " ", middle, yStat, -1, "right") self.scene.assets.fonts["small"]:draw(">", middle, yStat, -1, "center") if (newStat > stat) then self.scene.assets.fonts["small"]:setColor(0.3, 1, 0.3, 0.9) elseif (newStat < stat) then self.scene.assets.fonts["small"]:setColor(1, 0.3, 0.3, 0.9) end self.scene.assets.fonts["small"]:draw(" " .. newStat, middle, yStat, -1, "left") self.scene.assets.fonts["small"]:setColor(1, 1, 1, 1) utils.graphics.resetColor() end end end function EquipScreen:drawPocket() local x = const.X + DESC_SIZE - 48 local y = const.Y2 - 24 love.graphics.draw(self.choiceBack, x, y) self.scene.assets.fonts["small"]:draw("x" .. self.item.number, x + 16, y - 2, -1, "left") end function EquipScreen:goBack() self.scene.screens.mainmenu["items"](self.scene, game.loot:getPocketIdByName(self.category), self.widgetId) end function EquipScreen:useItem(charName) local character = game.characters.list[charName] if (self.item.number <= 1) then character:setEquip(self.category, self.item.name) self:goBack() else character:setEquip(self.category, self.item.name) end end -- Character menu function CharacterMenu:cancelAction() -- Switch à l'écran précédant self.scene.assets:playSFX("mBack") self.scene.currentScreen:goBack() end -- Hero custom widget -- function CharacterWidget:selectAction() self.scene.currentScreen.charName = self.charName end function CharacterWidget:action() self.scene.assets:playSFX("mSelect") self.scene.currentScreen:useItem(self.charName) self:redrawCanvas() end return EquipScreen