using UnityEngine; public class HeroReturnCallChangeWin : 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.nowCallChooseHeroID); if (index < 0) return; if (manager.GetCurrentDisplayCallHeroId() == manager.nowCallChooseHeroID) { SysNotifyMgr.Instance.ShowTip("HeroDebut01"); return; } manager.SnedHeroAppearCallHeroSelect(manager.actNum, index); CloseWindow(); }); previewButton.SetListener(() => { HeroUIManager.Instance.selectForPreviewHeroID = manager.nowCallChooseHeroID; UIManager.Instance.OpenWindow(); }); } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; manager.OnNowCallChooseHeroIDChangeEvent += OnNowCallChooseHeroIDChangeEvent; manager.nowCallChooseHeroID = manager.GetCurrentDisplayCallHeroId(); Display(); CreateScroller(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; manager.OnNowCallChooseHeroIDChangeEvent -= OnNowCallChooseHeroIDChangeEvent; } private void OnNowCallChooseHeroIDChangeEvent() { Display(); scroller.m_Scorller.RefreshActiveCellViews(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as HeroReturnCallChangeCell; _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.nowCallChooseHeroID); var skinConfig = HeroSkinConfig.Get(skinID); if (skinConfig == null) return; uiHeroController.Create(skinID, 1); } }