local UIHeroChangeView = UIViewClass() function UIHeroChangeView:OnOpened(context) self.heroIds = {} self.oldHeroId = context.oldHeroId local isOn = MDL.Player.Get_TypeState(MDL.Player.WearViewToggleStateType.HeroChange) if self.toggle_Hide.isOn ~= isOn then self.toggle_Hide.isOn = isOn end self:RefreshLHeroLoopScroll(true) CTL.Formation.SetPlayerHeroCounts() UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS.IDS_Formation_ChangeHero_FucName) UIUtils.SetLabelText(self.lab_NoHero, Const_IDS.IDS_Fomation_ChangeHero_NoheroToselect) UIUtils.SetActive(self.UICommonPopUp.img_Info, false) end function UIHeroChangeView:RefreshLHeroLoopScroll(isInit) 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() if not self.toggle_Hide.isOn then for i, v in ipairs(slotsList) do if v > 0 and v ~= self.oldHeroId then local heroData = MDL.HeroSelect.GetHeroDataById(v) self.loop_ChangeHeroScroll:AddData(heroData, 0) table.insert(self.heroIds, v) end end end for i, v in ipairs(heroList) do if 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 UIUtils.SetActive(self.group_NoHero.gameObject, true) else UIUtils.SetActive(self.group_NoHero.gameObject, false) end end function UIHeroChangeView:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIHeroChangeView:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() end end function UIHeroChangeView:OnCellInit(scrollRect, index, cellTable, data) local heroData = DataSheetManager.HeroNum:GetDataByID(data.ID) local heroQuality = CTL.HeroSelect.GetHeroNameQuality(data.ID) 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)) UIUtils.SetLabel(cellTable.txt_Quality, CTL.HeroSelect.GetHeroIntelligence(data.ID)) local name = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[heroData.NameIDS]), heroQuality) UIUtils.SetLabel(cellTable.txt_HeroName, name) if MDL.HeroAwaken.GetIsHeroAwaken(data.ID) then UIUtils.SetActive(cellTable.bg_Break, true) local awakenLevel = MDL.HeroAwaken.GetCurStar(data.ID) UIUtils.SetLabel(cellTable.lab_Break, string.FormatByIdsId(Const_IDS["IDS_HeroAwaken_AwakenLevelNum"], awakenLevel)) else 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 end if MDL.Player.HeroIsLineUp(data.ID) then UIUtils.SetActive(cellTable.img_ArrayUp, true) else UIUtils.SetActive(cellTable.img_ArrayUp, false) end UIUtils.SetLabelText(cellTable.btn_txt, Const_IDS.IDS_Formation_ChangeHero_ButtonInside) UIUtils.SetActive(cellTable.img_Assist, MDL.AssistanceFight.IsHeroOnAssistancePos(data.ID)) end function UIHeroChangeView:OnCellClicked(scrollRect, index, cellTable, target, data) if target == cellTable.btn_Change then UIManager.OpenView(Const_UI_Lua.UIEnum.UIHeroChangeConfirm, {oldHeroId = self.oldHeroId, newHeroId = data.ID}) self:CloseView() end end function UIHeroChangeView:OnValueChanged(comp, state) if comp == self.toggle_Hide then self:RefreshLHeroLoopScroll() MDL.Player.Set_TypeState(MDL.Player.WearViewToggleStateType.HeroChange, state) end end function UIHeroChangeView:GetCell(heroId) for i,v in ipairs(self.heroIds) do if v == heroId then self.loop_ChangeHeroScroll:MoveIndex(i-1) local cellTable = self.loop_ChangeHeroScroll:GetCellTableByIndex(i - 1) if cellTable then return cellTable.cell.transform end end end end return UIHeroChangeView