local UIHeroLightEffectChange = UIViewClass() local itemConsumeId = 4 function UIHeroLightEffectChange:OnOpened(context) self.heroIds = {} self.curSelectHeroID = MDL.HeroSelect.curSelectHeroID self:RefreshHeroLoopScroll() UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS.IDS_LightEffect_Change_02) UIUtils.SetLabelText(self.lab_NoHero, Const_IDS.IDS_Fomation_ChangeHero_NoheroToselect) UIUtils.SetActive(self.UICommonPopUp.img_Info, false) end function UIHeroLightEffectChange:RefreshHeroLoopScroll() local heroList = MDL.HeroSelect.GetSortedHeroData() table.sort(heroList , CTL.Formation.SortFormationHeroOrder) if self.loop_ChangeHeroScroll.Count > 0 then self.loop_ChangeHeroScroll:ClearCells() end table.clear(self.heroIds) local slotsList = MDL.Formation.GetSlotHeroIds() for i, v in ipairs(slotsList) do if v > 0 and v ~= self.curSelectHeroID then local heroData = MDL.HeroSelect.GetHeroDataById(v) self.loop_ChangeHeroScroll:AddData(heroData, 0) table.insert(self.heroIds, v) end end for i, v in ipairs(heroList) do if v.ID ~= self.curSelectHeroID and MDL.HeroSelect.IsHasHero(v.ID) then if not MDL.Player.HeroIsLineUp(v.ID) then self.loop_ChangeHeroScroll:AddData(v, 0) table.insert(self.heroIds, v.ID) end end end if self.loop_ChangeHeroScroll.Count > 0 then self.loop_ChangeHeroScroll:SelectIndex(0) end UIUtils.SetActive(self.group_NoHero.gameObject, self.loop_ChangeHeroScroll.Count == 0) end function UIHeroLightEffectChange:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIHeroLightEffectChange:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() elseif comp == self.btn_Change then if not self.isEnough then CTL.Tips.AddTipsMsg(Const_IDS.IDS_ERRORCODE_1011_InfoCode_Item_Not_Enough) else UIManager.OpenView(Const_UI_Lua.UIEnum.UIHeroLightEffectChangeConfirm, {oldHeroId = self.curSelectHeroID, newHeroId = self.selectHeroId}, Const_UI_Lua.UIEnum.UIHeroChangeConfirm) end end end function UIHeroLightEffectChange:OnCellInit(scrollRect, index, cellTable, data) UTL.Color.SetQualityImageByType(cellTable.bg_HeroHead, CTL.HeroAwaken.GetHeroQuality(data.ID, MDL.HeroAwaken.GetIsHeroAwaken(data.ID)), UTL.Color.QualityType.Square) UTL.Item.SetHeroIconByHeroId(cellTable.img_HeroHead, data.ID, MDL.HeroAwaken.GetIsHeroAwaken(data.ID)) local heroBreak = MDL.HeroStar.GetHeroStarLevel(data.ID) if heroBreak == 0 then UIUtils.SetActive(cellTable.bg_Break, false) else UIUtils.SetActive(cellTable.bg_Break, true) UIUtils.SetLabel(cellTable.lab_Break, "+"..heroBreak) end UIUtils.SetActive(cellTable.img_ArrayUp, MDL.Player.HeroIsLineUp(data.ID)) UIUtils.SetActive(cellTable.img_Assist, MDL.AssistanceFight.IsHeroOnAssistancePos(data.ID)) end function UIHeroLightEffectChange:OnCellSelect(scrollRect, index, cellTable, data) self.selectHeroId = data.ID self:RefreshItemConsume() end function UIHeroLightEffectChange:RefreshItemConsume() local itemConsumeNum = CTL.LightEffect.CalculateChangeConsumeNum(self.curSelectHeroID, self.selectHeroId) self.isEnough = UTL.Item.GetItemStockCount(itemConsumeId) >= itemConsumeNum local str = self.isEnough and UTL.Color.FormatGreenColor(itemConsumeNum) or UTL.Color.FormatRedColor(itemConsumeNum) UIUtils.SetLabel(self.txt_NumCost, str) end return UIHeroLightEffectChange