local EquipData = class("EquipData", BaseData) local EquipEntity = require "app/userdata/equip/equip_entity" function EquipData:ctor() self.data.isDirty = false end function EquipData:clear() ModuleManager.EquipManager:updateEquipGiftTimer(true) end function EquipData:init(data) data = data or GConst.EMPTY_TABLE Logger.logHighlight("装备数据") Logger.printTable(data) self.equips = {} if not data.HeroesEquips then return end for heroId, equip in pairs(data.HeroesEquips) do for part, level in pairs(equip.Equips) do self:addEquip(heroId, part, level) end end end function EquipData:setDirty() self.data.isDirty = not self.data.isDirty end -- 武器功能是否开启 function EquipData:isWeaponOpen(showToast) if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.EQUIP_WEAPON, not showToast) then return false end return true end -- 防具功能是否开启 function EquipData:isArmorOpen(showToast) if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.EQUIP_ARMOR, not showToast) then return false end return true end function EquipData:addEquip(heroId, part, level) if not self.equips[heroId] then self.equips[heroId] = {} end if self.equips[heroId][part] then return end self.equips[heroId][part] = self:createEntity(heroId, part, level) end function EquipData:createEntity(heroId, part, level) return EquipEntity:create(heroId, part, level) end function EquipData:getAllEquips() return self.equips end function EquipData:getEquip(id, part) if not self.equips[id] then self.equips[id] = {} end if not self.equips[id][part] then self.equips[id][part] = self:createEntity(id, part) end return self.equips[id][part] end -- 是否有装备可升级 function EquipData:canUpgradeEquip(heroId) if self:canUpgradeWeapon(heroId) then return true end if self:canUpgradeArmor(heroId) then return true end return false end -- 武器是否可升级 function EquipData:canUpgradeWeapon(heroId) if not self:isWeaponOpen() then return false end local entity = self:getEquip(heroId, GConst.EquipConst.PART_TYPE.WEAPON) if entity:canLevelUp() then return true end return false end -- 防具是否可升级 function EquipData:canUpgradeArmor(heroId) if not self:isArmorOpen() then return false end local entity for name, part in pairs(GConst.EquipConst.PART_TYPE) do entity = self:getEquip(heroId, part) if part ~= GConst.EquipConst.PART_TYPE.WEAPON then if entity:canLevelUp() then return true end end end return false end -- 获取防具最小阶段 function EquipData:getMinArmorStage(heroId) local minStage = -1 for name, part in pairs(GConst.EquipConst.PART_TYPE) do if part ~= GConst.EquipConst.PART_TYPE.WEAPON then local entity = self:getEquip(heroId, part) if minStage == -1 or minStage > entity:getStage() then minStage = entity:getStage() end end end return minStage >= 0 and minStage or 0 end -- 装备升级 function EquipData:onUpgradeEquip(heroId, part) local entity = self:getEquip(heroId, part) if not entity then return end entity:onLevelUp() DataManager.HeroData:getHeroById(heroId):onEquipAttrChange() end return EquipData