local UIGodPetBreak = UIViewClass() function UIGodPetBreak:OnOpened(context) UIManager.ActiveUIModle(false, "UIGodPetBreak") self:RegistSystemEvent(EventID.BagItem_Update, self.UpdateCostMat) self:RegistSystemEvent(EventID.UI_Pet_UpdatePetInfo, self.RefreshPanel) self:RegistSystemEvent(EventID.UI_Pet_GodPetBreak, self.OnGodPetBreak) self:RegistSystemEvent(EventID.UI_CloseAndRecoverView, self.OnCloseAndRecoverView) UIUtils.SetActive(self.UIPetPopUp.btn_Info, false) if self.UIPetPopUp.loc_Title.CurState == 0 then UIUtils.SetLocalizationImage(self.UIPetPopUp.img_Title, "UI_Pet/cwjj_msz_01.png") else UIUtils.SetLabelText(self.UIPetPopUp.txt_Title, Const_IDS.IDS_PetAdvance4) end self.modelComponentDataHandle = UTL.UIRender.CreateModelComponentDatas(self.model_Show) self.petUniqueID = context.petUniqueID self:RefreshPanel() end function UIGodPetBreak:RefreshPanel() local petData = MDL.Pet.GetActiveInfo(self.petUniqueID) local petInfo, petCfg = petData.Info, petData.Config self:LoadModel(petCfg) CTL.Pet.SetPetName(self.txt_Name, petInfo, petCfg) CTL.Pet.FormatGrowUpScoreText(self.Txt_BaseAttr, petInfo, petCfg) local skillArray = {} local godPetStarCfg = DataSheetManager.GodPetStar:GetDataByPetID_PetStar(petCfg.ID, petInfo.bigBreak) if godPetStarCfg.GodPetStarTalentID > 0 then local godTalentCfg = DataSheetManager.GodPetStarTalent:GetDataByID(godPetStarCfg.GodPetStarTalentID) if #godPetStarCfg.Item_Table > 0 and petInfo.smallBreak == godTalentCfg.StarNum then self.costItem = godPetStarCfg.Item_Table[1] else self.costItem = godTalentCfg.Item_Table[1] end --预览下次的增长值 if petInfo.smallBreak ~= godTalentCfg.StarNum then for i, now in ipairs(petCfg.Talent_Table) do if self.Attr_arr[i] then self.Attr_arr[i].txt_Add.text = nil for _, new in ipairs(godTalentCfg.Talent_Table) do if new.TalentType == now.TalentType then self.Attr_arr[i].txt_Add.text = "+" .. new.AddNum break end end end end else for i, v in ipairs(self.Attr_arr) do v.txt_Add.text = nil end end UIUtils.SetActive(self.group_Bottom, true) UIUtils.SetActive(self.group_Final, false) self:UpdateCostMat() local nextGodPetStarCfg = DataSheetManager.GodPetStar:GetDataByPetID_PetStar(godPetStarCfg.PetID, godPetStarCfg.PetStar + 1) for i, v in ipairs(DataSheetManager.PetData:GetDataByID_Stage(petCfg.ID, nextGodPetStarCfg.Stage).TalentSkill) do table.insert(skillArray, v) end for i, v in ipairs(DataSheetManager.PetData:GetDataByID_Stage(petCfg.ID, nextGodPetStarCfg.Stage).ChildTalentSkill) do table.insert(skillArray, v) end self.txt_BreakProgress.text = UIUtils.GetLocalizedTxt(Const_IDS.IDS_PetAdvance5) .. string.format("(%d/%d)", petInfo.smallBreak, godTalentCfg.StarNum) self.slider_Break.value = petInfo.smallBreak / godTalentCfg.StarNum self.txt_AwakenTitle.text = CTL.Pet.GetGodBreakDesc(petInfo, false) local curStar = petInfo.bigBreak % 5 UIUtils.SetActive(self.group_Awaken.gameObject, true) for i, v in ipairs(self.group_Awaken) do if i > curStar then v:SetState(0) else v:SetState(1) end end else --已经是完全体 self.txt_AwakenTitle.text = nil UIUtils.SetActive(self.group_Awaken.gameObject, false) UIUtils.SetActive(self.group_Bottom, false) UIUtils.SetActive(self.group_Final, true) skillArray = petInfo.congenitalSkill end CTL.Pet.SetPetAptitude(self.Attr_arr, petInfo, petCfg) self.txt_BreakTitle.text = self:GetBreakDesc(godPetStarCfg) self:SetSkillInfo(skillArray) end function UIGodPetBreak:UpdateCostMat() self.isItemEnough = false if self.costItem then local curNum = MDL.Bag.GetItemCount(self.costItem.ItemID) local costNum = self.costItem.ItemNum if curNum >= costNum then self.isItemEnough = true UTL.Item.SetItemCell(self.Item, self.costItem.ItemID, UTL.Color.FormatGreenColor(curNum) .. "/" .. costNum) else UTL.Item.SetItemCell(self.Item, self.costItem.ItemID, UTL.Color.FormatRedColor(curNum) .. "/" .. costNum) end end self.btn_Break:SetRedPoint(self.isItemEnough) end function UIGodPetBreak:LoadModel(petConfig) if self.curModelId and self.curModelId == petConfig.PetModelID then return end self.curModelId = petConfig.PetModelID UTL.UIRender.DisposePlayerModel(self.modelComponentDataHandle) UTL.UIRender.CreateRTSceneTrans(self.modelComponentDataHandle, petConfig.PetModelLight) local modelPath, modelScale, showEquipmentID, renderID, idleAnimCilp, heroEffectPath, psEffectPath, modelXYZ, modelRot = CTL.Pet.GetRenderTextureModelParam(petConfig, self.__viewClassPath) UTL.UIRender.CreateRTRenderModel(self.modelComponentDataHandle, modelPath, modelScale, showEquipmentID, renderID, idleAnimCilp, heroEffectPath, psEffectPath) UTL.UIRender.SetRTRootParam(self.modelComponentDataHandle, modelXYZ, modelRot) end function UIGodPetBreak:GetBreakDesc(godPetStarCfg) local success, nextGodPetStarCfg = DataSheetManager.GodPetStar:TryGetDataByPetID_PetStar(godPetStarCfg.PetID, godPetStarCfg.PetStar + 1) if success then local count = 0 for i, v in DataSheetManager.GodPetStar:GetEnumerator() do if v.PetID == godPetStarCfg.PetID and v.Stage < nextGodPetStarCfg.Stage then count = count + 1 end end if nextGodPetStarCfg.Stage == 0 then return string.FormatByIdsId(Const_IDS.IDS_Pet_AdvanceLevel1, nextGodPetStarCfg.PetStar - count) elseif nextGodPetStarCfg.Stage == 1 then return string.FormatByIdsId(Const_IDS.IDS_Pet_AdvanceLevel2, nextGodPetStarCfg.PetStar - count) elseif nextGodPetStarCfg.Stage == 2 then return string.FormatByIdsId(Const_IDS.IDS_Pet_AdvanceLevel3, nextGodPetStarCfg.PetStar - count) end else local count = 0 for i, v in DataSheetManager.GodPetStar:GetEnumerator() do if v.PetID == godPetStarCfg.PetID and v.Stage < godPetStarCfg.Stage then count = count + 1 end end return string.FormatByIdsId(Const_IDS.IDS_Pet_AdvanceLevel3, godPetStarCfg.PetStar - count) end end function UIGodPetBreak:SetSkillInfo(skillArray) self.skillArray = skillArray for i, v in ipairs(self.group_Skill) do if skillArray[i] then UIUtils.SetActive(v.gameObject, true) local skillConfig = DataSheetManager.PetTalentSkill:GetDataByID(skillArray[i]) UIUtils.SetImageByAssetBundle(v.img_StarSkill, skillConfig.SkillIcon) else UIUtils.SetActive(v.gameObject, false) end end end function UIGodPetBreak:OnClosed() UIManager.ActiveUIModle(true, "UIGodPetBreak") UIUtils.SetActive(self.UIPetPopUp.btn_Info, true) UTL.UIRender.DisposeModelComponentData(self.modelComponentDataHandle) end function UIGodPetBreak:OnButtonClicked(comp) if comp == self.UIPetPopUp.btn_Close then self:CloseView(true) elseif comp == self.btn_Break then if self.isItemEnough == false then CTL.Tips.AddTipsMsg(Const_IDS.IDS_HeroAdvanceLackOfItem) return end MDL.Pet.GodPetBreakReq(self.petUniqueID) elseif comp == self.Item.event_Click then UTL.ItemTips.ShowCommonTipsById(self.costItem.ItemID) else for i, v in ipairs(self.group_Skill) do if v.btn == comp then CTL.Pet.ShowSkillTips(self.skillArray[i]) return end end for i, v in ipairs(self.Attr_arr) do if comp == v.btn_Attr then local petData = MDL.Pet.GetActiveInfo(self.petUniqueID) local petInfo, petCfg = petData.Info, petData.Config CTL.Pet.ShowTalentDesc(petCfg, petInfo, i, comp) return end end end end function UIGodPetBreak:OnBackButtonPressed() self:OnButtonClicked(self.UIPetPopUp.btn_Close) end function UIGodPetBreak:OnGodPetBreak(addAptitudeTypeArray) local petData = MDL.Pet.GetActiveInfo(self.petUniqueID) local petInfo, petCfg = petData.Info, petData.Config local tab = CTL.Pet.GetTalentTab(petCfg, petInfo) for i, v in ipairs(tab) do for _, add in ipairs(addAptitudeTypeArray) do if add == v.TalentType then if self.Attr_arr[i] then self.Attr_arr[i].effect_AttrUp:PlayUIEffect() end break end end end end return UIGodPetBreak