using UnityEngine; public class HeroReturnStarUpChangeWin : UIBase { [SerializeField] ScrollerController scroller; [SerializeField] ButtonEx closeButton; [SerializeField] ButtonEx okButton; [SerializeField] ButtonEx previewButton; [SerializeField] UIHeroController uiHeroController; public const int rowCountMax = 4; HeroReturnManager manager => HeroReturnManager.Instance; protected override void InitComponent() { closeButton.SetListener(CloseWindow); okButton.SetListener(() => { var act = manager.GetOperationHeroAppearInfo(); if (act == null) return; int index = manager.GetHeroIdIndex(act.CfgID, manager.nowStarUpChooseHeroID); if (index < 0) return; manager.SendHeroAppearStarHeroSelect(manager.actNum, index); manager.SaveStarUpChooseHeroStateKey(act); CloseWindow(); }); previewButton.SetListener(() => { HeroUIManager.Instance.selectForPreviewHeroID = manager.nowStarUpChooseHeroID; UIManager.Instance.OpenWindow(); }); } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; manager.OnNowStarUpChooseHeroIDChangeEvent += OnNowStarUpChooseHeroIDChangeEvent; manager.nowStarUpChooseHeroID = manager.GetCurrentDisplayStarUpHeroId(); Display(); CreateScroller(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; manager.OnNowStarUpChooseHeroIDChangeEvent -= OnNowStarUpChooseHeroIDChangeEvent; if (!UIManager.Instance.IsOpened() && manager.LoadStarUpChooseHeroStateKey(manager.GetOperationHeroAppearInfo())) { UIManager.Instance.OpenWindow(); } } private void OnNowStarUpChooseHeroIDChangeEvent() { Display(); scroller.m_Scorller.RefreshActiveCellViews(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as HeroReturnStarUpChangeCell; _cell.Display(cell.index); } void CreateScroller() { var act = manager.GetOperationHeroAppearInfo(); if (act == null) return; var config = ActHeroAppearConfig.Get(act.CfgID); if (config == null) return; var arr = config.ActHeroIDList; if (arr.IsNullOrEmpty()) return; scroller.Refresh(); int rowCount = (int)Mathf.Ceil((float)arr.Length / rowCountMax); for (int i = 0; i < rowCount; i++) { scroller.AddCell(ScrollerDataType.Header, i); } scroller.Restart(); } void Display() { var act = manager.GetOperationHeroAppearInfo(); if (act == null) return; int skinID = manager.GetDefaultSkinID(manager.nowStarUpChooseHeroID); var skinConfig = HeroSkinConfig.Get(skinID); if (skinConfig == null) return; uiHeroController.Create(skinID, 1); } }