using System.Collections.Generic; using UnityEngine; public class HeroFatesPutWin : UIBase { [SerializeField] Transform transChooseHero; [SerializeField] HeroFatesPutItem chooseHero; [SerializeField] GiftBaseCell[] giftBaseCells; [SerializeField] Transform transNoChooseHero; [SerializeField] ScrollerController scroller; [SerializeField] Transform transNoCanChooseHero; [SerializeField] ButtonEx btnPut; [SerializeField] TextEx txtChooseCnt; HeroFatesManager manager { get { return HeroFatesManager.Instance; } } protected override void InitComponent() { btnPut.SetListener(() => { manager.PutList(); CloseWindow(); }); } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; manager.OnChooseChangeEvent += OnChooseChangeEvent; CreateScoller(); DisplayChooseHero(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; manager.OnChooseChangeEvent -= OnChooseChangeEvent; } private void OnChooseChangeEvent() { RefeshScoller(); DisplayChooseHero(); } List list = new List(); private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index, list); } void CreateScoller() { scroller.Refresh(); if (manager.TryGetHeroFatesConfig(manager.chooseHeroFatesId, out HeroFatesConfig config) && manager.TryGetNowLVAndNextLVConfig(config.FatesID, out int nowLv, out HeroFatesQualityLVConfig nowLVConfig, out HeroFatesQualityLVConfig nextLVConfig)) { int fatesQuality = nextLVConfig.NeedQuality; list = manager.GetConsumableHeroInfoList(fatesQuality); transNoCanChooseHero.SetActive(list.IsNullOrEmpty()); if (!list.IsNullOrEmpty()) { int rowCount = Mathf.CeilToInt((float)list.Count / manager.rowCountMax); for (int i = 0; i < rowCount; i++) { scroller.AddCell(ScrollerDataType.Header, i); } } } scroller.Restart(); } void RefeshScoller() { scroller.m_Scorller.RefreshActiveCellViews(); } void DisplayChooseHero() { HeroInfo heroInfo = manager.chooseHeroInfo; transNoChooseHero.SetActive(heroInfo == null); transChooseHero.SetActive(heroInfo != null); if (heroInfo != null) { chooseHero.Display(heroInfo); HeroUIManager.Instance.RefreshGiftCell(giftBaseCells, heroInfo); } if (!manager.TryGetNowLVAndNextLVConfig(manager.chooseHeroFatesId, out int nowLv, out HeroFatesQualityLVConfig nowLVConfig, out HeroFatesQualityLVConfig nextLVConfig)) { return; } int needCnt = nextLVConfig.NeedHeroCnt; int chooseCnt = manager.chooseCostHeroInfos.Count; txtChooseCnt.text = Language.Get("HeroFates04", UIHelper.AppendColor(chooseCnt >= needCnt ? TextColType.DarkGreen : TextColType.Red, Language.Get("BoneField09", chooseCnt, needCnt))); } }