local EquipManager = class("EquipManager", BaseModule) function EquipManager:showEquipListUI(heroEntity, part) UIManager:showUI("app/ui/equip/equip_list_ui", {heroEntity = heroEntity, part = part}) end function EquipManager:showEquipGrowthUI(slotId, part) UIManager:showUI("app/ui/equip/equip_growth_ui", {slotId = slotId, part = part}) end function EquipManager:showEquipInfoUI(params) local uiObj = UIManager:checkOpen(UIManager.UI_PATH.EQUIP_INFO_UI) if uiObj then uiObj:ctor(params) uiObj:onRefresh() else UIManager:showUI(UIManager.UI_PATH.EQUIP_INFO_UI, params) end end -- 共鸣 function EquipManager:showEquipResonateUI(slotId, page) UIManager:showUI("app/ui/equip/equip_resonate_ui", {slotId = slotId, page = page}) end -- 分解弹窗(批量分解) function EquipManager:showEquipResolveUI() UIManager:showUI("app/ui/equip/equip_resolve_ui") end -- 套装效果弹窗 function EquipManager:showEquipGetResonateUI(type, lvNew, attrs, attrNexts) local params = { type = type, lvNew = lvNew, attrs = attrs, attrNexts = attrNexts, } UIManager:showUI("app/ui/equip/equip_get_resonate_ui", params) end --@region 协议 -- 装备穿戴 function EquipManager:onEquipWearReq(slotId, ids) if table.nums(ids) <= 0 then return end local params = {} params.slot = slotId params.ids = ids self:sendMessage(ProtoMsgType.FromMsgEnum.EquipWearReq, params, self.onEquipWearRsp, BIReport.ITEM_GET_TYPE.EQUIP_WEAR) end function EquipManager:onEquipWearRsp(result) if result.err_code == GConst.ERROR_STR.SUCCESS then local lvOld, nextLv, attrs, attrNexts = DataManager.EquipData:getResonateLevel(GConst.EquipConst.RESONATE_PAGE.QLT, result.reqData.slot) DataManager.EquipData:onWearSuccess(result.reqData.slot, result.reqData.ids) DataManager.HeroData:setAllHeroesDitry() DataManager.HeroData:setDirty() DataManager.HeroData:calcPower() local lvNew = DataManager.EquipData:getResonateLevel(GConst.EquipConst.RESONATE_PAGE.QLT, result.reqData.slot) if lvOld < lvNew then self:showEquipGetResonateUI(GConst.EquipConst.RESONATE_PAGE.QLT, lvNew, attrs, attrNexts) -- DataManager.GiftPopData:activeEquipResonancePopGift(GConst.EquipConst.RESONATE_PAGE.QLT, lvNew) end end end -- 装备升级 function EquipManager:onEquipUpgradeReq(slotId, part) local lv = DataManager.EquipData:getPartLv(slotId, part) local itemCost = DataManager.EquipData:getLevelCost(lv + 1) if not GFunc.checkCost(itemCost.id, itemCost.num, true) then return end local params = {} params.slot = slotId params.part = part self:sendMessage(ProtoMsgType.FromMsgEnum.EquipUpgradeReq, params, self.onEquipUpgradeRsp, BIReport.ITEM_GET_TYPE.EQUIP_LV_UP) end function EquipManager:onEquipUpgradeRsp(result) if result.err_code == GConst.ERROR_STR.SUCCESS then local lvOld, nextLv, attrs, attrNexts = DataManager.EquipData:getResonateLevel(GConst.EquipConst.RESONATE_PAGE.LV_UP, result.reqData.slot) DataManager.EquipData:onUpgradeSuccess(result.reqData.slot, result.upgraded) DataManager.HeroData:setAllHeroesDitry() DataManager.HeroData:setDirty() DataManager.HeroData:calcPower() local lvNew = DataManager.EquipData:getResonateLevel(GConst.EquipConst.RESONATE_PAGE.LV_UP, result.reqData.slot) if lvOld < lvNew then self:showEquipGetResonateUI(GConst.EquipConst.RESONATE_PAGE.LV_UP, lvNew, attrs, attrNexts) -- DataManager.GiftPopData:activeEquipResonancePopGift(GConst.EquipConst.RESONATE_PAGE.LV_UP, lvNew) end end end -- 装备精炼 function EquipManager:onEquipRefineReq(slotId, part) local refine = DataManager.EquipData:getPartRefine(slotId, part) local itemCost = DataManager.EquipData:getRefineCost(refine + 1) if not GFunc.checkCost(itemCost.id, itemCost.num, true) then return end local params = {} params.slot = slotId params.part = part self:sendMessage(ProtoMsgType.FromMsgEnum.EquipRefineReq, params, self.onEquipRefineRsp, BIReport.ITEM_GET_TYPE.EQUIP_REFINE) end function EquipManager:onEquipRefineRsp(result) if result.err_code == GConst.ERROR_STR.SUCCESS then local lvOld, nextLv, attrs, attrNexts = DataManager.EquipData:getResonateLevel(GConst.EquipConst.RESONATE_PAGE.REFINE, result.reqData.slot) DataManager.EquipData:onRefineSuccess(result.reqData.slot, result.reqData.part, result.part) DataManager.HeroData:setAllHeroesDitry() DataManager.HeroData:setDirty() DataManager.HeroData:calcPower() local lvNew = DataManager.EquipData:getResonateLevel(GConst.EquipConst.RESONATE_PAGE.REFINE, result.reqData.slot) if lvOld < lvNew then self:showEquipGetResonateUI(GConst.EquipConst.RESONATE_PAGE.REFINE, lvNew, attrs, attrNexts) -- DataManager.GiftPopData:activeEquipResonancePopGift(GConst.EquipConst.RESONATE_PAGE.REFINE, lvNew) end end end -- 装备分解 function EquipManager:onEquipDecomposeReq(ids) self:sendMessage(ProtoMsgType.FromMsgEnum.EquipDecomposeReq, {ids = ids}, self.onEquipDecomposeRsp, BIReport.ITEM_GET_TYPE.EQUIP_RESOLVE) end function EquipManager:onEquipDecomposeRsp(result) if result.err_code ~= GConst.ERROR_STR.SUCCESS then return end GFunc.showRewardBox(result.rewards, {customTitleStr = I18N:getGlobalText(I18N.GlobalConst.REBACK_MATERIAL_DESC)}) DataManager.EquipData:onResolveSuccess(result.reqData.ids) -- ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.EQUIP_RESOLVE_NUM, #result.reqData.ids) BIReport:postEquipResolveOpt(BIReport.EQUIP_OP_TYPE.RESOLVE, result.reqData.ids, result.rewards) end --@endregion --@region 上报 local EVENT_NAME_EQUIP_OPT = "client_equip_opt" BIReport.EQUIP_OP_TYPE = { GET = "Get", WEAR = "Wear", LEVEL_UP = "LevelUp", REFINE_UP = "RefineUp", RESOLVE = "Resolve", } -- 装备 function BIReport:postEquipWearOpt(optType, seat, list) local str_list = "" for _, equipId in ipairs(list) do str_list = str_list .. equipId .. ";" end local args = { opt_type = optType, seat = seat, wear_equips = str_list, seat_data = DataManager.EquipData:getSeatDataString(), } self:report(EVENT_NAME_EQUIP_OPT, args) end function BIReport:postEquipLvUpOpt(optType, seat, parts) local strData = "" for _, part in ipairs(parts) do strData = strData .. part .. ";" end local args = { opt_type = optType, seat = seat, part = strData, seat_data = DataManager.EquipData:getSeatDataString(), } self:report(EVENT_NAME_EQUIP_OPT, args) end function BIReport:postEquipResolveOpt(optType, resolveIds, rewards) local args = { opt_type = optType, resolve_ids = resolveIds, reward_str = rewards and GFunc.getRewardsStr(rewards) or nil, seat_data = DataManager.EquipData:getSeatDataString(), } self:report(EVENT_NAME_EQUIP_OPT, args) end function BIReport:postEquipGet(equipId, cfgId, getType) local equip = DataManager.EquipData:getEquipByUid(equipId) local args = { opt_type = BIReport.EQUIP_OP_TYPE.GET, equip_id = equipId, equip_cfg_id = cfgId, type = getType, } if equip then args.equip_part = equip:getPart() args.equip_qlt = equip:getQlt() end self:report(EVENT_NAME_EQUIP_OPT, args) end --@endregion return EquipManager