using System.Collections.Generic; using UnityEngine; public class LineupRecommendWin : UIBase { [SerializeField] ScrollerController scroller; LineupRecommendManager manager { get { return LineupRecommendManager.Instance; } } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; scroller.OnGetDynamicSize += OnGetDynamicSize; manager.OnUpdateLineupRecommendInfoEvent += OnUpdateLineupRecommendInfoEvent; manager.OnUpdateSwitchOnOrOffEvent += OnUpdateSwitchOnOrOffEvent; manager.ClearOnList(); scroller.lockType = EnhanceLockType.KeepVertical; CreateScoller(); int index = 0; manager.TryGetJumpIndex(out index); scroller.JumpIndex(index); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; scroller.OnGetDynamicSize -= OnGetDynamicSize; manager.OnUpdateLineupRecommendInfoEvent -= OnUpdateLineupRecommendInfoEvent; manager.OnUpdateSwitchOnOrOffEvent -= OnUpdateSwitchOnOrOffEvent; } private void OnUpdateSwitchOnOrOffEvent() { CreateScoller(); } private void OnUpdateLineupRecommendInfoEvent() { RefreshScoller(); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index); } private bool OnGetDynamicSize(ScrollerDataType type, int index, out float height) { height = 0; List sortShowList = manager.GetSortShowList(); if (index < 0 || index >= sortShowList.Count) return false; var id = sortShowList[index]; bool isOn = manager.IsOn(id); height = isOn ? 502 : 252; return true; } void RefreshScoller() { scroller.m_Scorller.RefreshActiveCellViews(); } void CreateScoller() { scroller.Refresh(); var list = manager.GetSortShowList(); if (!list.IsNullOrEmpty()) { for (int i = 0; i < list.Count; i++) { scroller.AddCell(ScrollerDataType.Header, i); } } scroller.Restart(); } }