--[[ 宠物符文融合 ]]-- local UIGodPetRuneFusion = UIViewClass() local EventSystem = require('Event/EventSystem') local CONST_MERGE_COUNT = 4 function UIGodPetRuneFusion:OnOpened(context) UIUtils.SetActive(self.obj_Success, false) self:RegistSystemEvent(EventID.UI_Pet_RefreshRuneSubView, self.ResetFusion) self:RegistSystemEvent(EventID.UI_Pet_RuneOpt_SelectItem, self.OnSelectItem) self:RegistSystemEvent(EventID.UI_Pet_RuneOpt, self.OnRuneOpt) self:RegistSystemEvent(EventID.UI_Pet_DiscardSelect, self.OnDiscardSelect) self:RegistSystemEvent(EventID.UI_Pet_MergeRuneSuccess, self.OnMergeRuneSuccess) --合成位置上的符文id self.mergePosList = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, } self:ResetFusion() end --dict:Key是背包id function UIGodPetRuneFusion:OnRuneOpt(dict) --消耗数量判断 if table.getDictCount(dict) < CONST_MERGE_COUNT then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Pet_SkillNumLack"]) return end local level for serverId, _ in pairs(dict) do local skillCfg = MDL.Pet.GetRuneCfgByID(serverId) if level == nil then level = skillCfg.RuneLevel else if level ~= skillCfg.RuneLevel then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Pet_NewSkillSameLevel"]) return end end end --判断等级是否最高 if level >= CTL.Pet.MAX_SKILL_LEVEL then if CTL.Pet.GetRuneOptConfirm(CTL.Pet.RuneOptConfirmKey_MaxMerge) == false then UTL.MessageBox.ShowOKCancelToggleBox(nil, Const_IDS.IDS_Pet_MakeSkillConfirm, UIUtils.GetLocalizedTxt(Const_IDS.IDS_EquipRefine_QuickTips2), function() MDL.Pet.PetTalismanMergeReq(dict) end, function(isOn) CTL.Pet.SetRuneOptConfirm(CTL.Pet.RuneOptConfirmKey_MaxMerge, isOn) end ) return end end MDL.Pet.PetTalismanMergeReq(dict) self:ClearRed() end function UIGodPetRuneFusion:ResetFusion() for i, v in ipairs(self.group_RuneFusion) do UIUtils.SetActive(v.Effect_RuneFusionLine, false) UIUtils.SetActive(v.img_SkillIcon, false) UIUtils.SetActive(v.img_LevelBg, false) UIUtils.SetActive(v.img_Empty, true) v.effect_ItemJiBan:StopUIEffect() end end function UIGodPetRuneFusion:OnSelectItem(isSelect, serverId) UIUtils.SetActive(self.obj_Success, false) self.effect_ItemJiBan:StopUIEffect() local item if isSelect then for i, v in ipairs(self.mergePosList) do if v == 0 then item = self.group_RuneFusion[i] self.mergePosList[i] = serverId break end end UIUtils.SetActive(item.img_LevelBg, true) UIUtils.SetActive(item.img_Empty, false) UIUtils.SetActive(item.img_SkillIcon, true) UIUtils.SetActive(item.Effect_RuneFusionLine, true) local cfg = MDL.Pet.GetRuneCfgByID(serverId) UIUtils.SetImageByAssetBundle(item.img_SkillIcon, cfg.RuneIcon) UIUtils.SetLabelText(item.txt_Level, CTL.Pet.RuneSkillLevelIDS[cfg.RuneLevel]) if cfg.RuneLevel == CTL.Pet.MAX_SKILL_LEVEL then item.effect_ItemJiBan:PlayUIEffect() else item.effect_ItemJiBan:StopUIEffect() end CTL.Sound.PlayGameSound("UI_breakout_02") else for i, v in ipairs(self.mergePosList) do if v == serverId then item = self.group_RuneFusion[i] self.mergePosList[i] = 0 break end end UIUtils.SetActive(item.img_LevelBg, false) UIUtils.SetActive(item.img_Empty, true) item.effect_ItemJiBan:StopUIEffect() UIUtils.SetActive(item.Effect_RuneFusionLine, false) UIUtils.SetActive(item.img_SkillIcon, false) end end function UIGodPetRuneFusion:OnDiscardSelect() for i, v in ipairs(self.group_RuneFusion) do self.mergePosList[i] = 0 UIUtils.SetActive(v.Effect_RuneFusionLine, false) UIUtils.SetActive(v.img_LevelBg, false) UIUtils.SetActive(v.img_Empty, true) v.effect_ItemJiBan:StopUIEffect() UIUtils.SetActive(v.img_SkillIcon, false) end end function UIGodPetRuneFusion:OnButtonClicked(comp) if comp == self.click_Rect then if self.mergeSuccessId then CTL.Pet.ShowRuneSkillTips(self.mergeSuccessId) end else for i, v in ipairs(self.group_RuneFusion) do if comp == v.click_Rect then local serverId = self.mergePosList[i] if type(serverId) == 'string' then EventSystem.Dispatch(EventID.UI_Pet_CancelSelectRune, serverId) self:OnSelectItem(false, serverId) end return end end end end function UIGodPetRuneFusion:OnMergeRuneSuccess(cfgId) UIUtils.SetActive(self.obj_Success, true) local cfg = DataSheetManager.PetRuneSkill:GetDataByPetRuneID(cfgId) UIUtils.SetImageByAssetBundle(self.img_SkillIcon, cfg.RuneIcon) UIUtils.SetLabelText(self.txt_Level, CTL.Pet.RuneSkillLevelIDS[cfg.RuneLevel]) UIUtils.SetLabelText(self.lab_Rune, Const_IDS[cfg.RuneName]) self.mergeSuccessId = cfgId self.effect_BreakSuccess:PlayUIEffect() self.effect_ItemJiBan:PlayUIEffect() end function UIGodPetRuneFusion:ClearRed() if CTL.RedPoint.GetRedPointActive(CTL.RedPoint.RedPointKey.Formation_Pet_Rune_Merge) then MDL.RedPoint.OneTimeRedPointRequest(MDL.RedPoint.RedPointType.PetRuneMerge, 1, true) CTL.RedPoint.RemoveRedPoint(CTL.RedPoint.RedPointKey.Formation_Pet_Rune_Merge) end end function UIGodPetRuneFusion:OnClosed() self:ClearRed() end return UIGodPetRuneFusion