using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class SkinStoreWin : UIBase { [SerializeField] Button giftBtn; [SerializeField] ScrollerController scroller; protected override void InitComponent() { giftBtn.AddListener(() => { UIManager.Instance.OpenWindow(); }); } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; StoreModel.Instance.RefreshShopEvent += Show; StoreModel.Instance.RefreshBuyShopLimitEvent += Show; Display(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; StoreModel.Instance.RefreshShopEvent -= Show; StoreModel.Instance.RefreshBuyShopLimitEvent -= Show; } void Display() { CreateScroller(); } void Show() { scroller.m_Scorller.RefreshActiveCellViews(); } void CreateScroller() { if (!StoreModel.Instance.storeTypeDict.ContainsKey(StoreModel.skinStoreType)) { return; } int jumpIndex = -1; scroller.Refresh(); var list = StoreModel.Instance.storeTypeDict[StoreModel.skinStoreType]; for (int i = 0; i < list.Count; i++) { if (i % 4 == 0) { scroller.AddCell(ScrollerDataType.Header, i); } if (jumpIndex == -1 && list[i].shopId == StoreModel.Instance.jumpShopID) { jumpIndex = i / 4; } } scroller.Restart(); scroller.lockType = EnhanceLockType.KeepVertical; if (StoreModel.Instance.jumpShopID != 0) { scroller.JumpIndex(jumpIndex); StoreModel.Instance.jumpShopID = 0; } } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as SkinStoreLineCell; _cell.Display(cell.index); } }