using UnityEngine; public class HeroReturnShopWin : UIBase { [SerializeField] OwnItemCell ownItemCell; [SerializeField] ButtonEx closeButton; [SerializeField] TextEx timeText; [SerializeField] ScrollerController scroller; HeroReturnManager manager => HeroReturnManager.Instance; protected override void InitComponent() { closeButton.SetListener(CloseWindow); } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; StoreModel.Instance.RefreshShopEvent += CreateScroller; StoreModel.Instance.RefreshBuyShopLimitEvent += CreateScroller; GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; if (!manager.IsShopVisitedToday) { HeroReturnManager.Instance.SaveShopVisitTimeData(); manager.UpdateRedpoint(); } var act = manager.GetOperationHeroAppearInfo(); if (act == null) return; var config = ActHeroAppearConfig.Get(act.CfgID); if (config == null) return; ownItemCell.itemID = config.ExShopCostItemID; CreateScroller(); OnSecondEvent(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; StoreModel.Instance.RefreshShopEvent -= CreateScroller; StoreModel.Instance.RefreshBuyShopLimitEvent -= CreateScroller; GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; StoreModel.Instance.selectStoreFuncType = StoreFunc.Normal; } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as HeroReturnShopLineCell; _cell.Display(cell.index); } private void OnSecondEvent() { manager.GetActTimeStr(timeText); } void CreateScroller() { var act = manager.GetOperationHeroAppearInfo(); if (act == null) return; var config = ActHeroAppearConfig.Get(act.CfgID); if (config == null) return; if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ExShopType, out var list)) return; scroller.Refresh(); for (int i = 0; i < list.Count; i++) { if (i % 3 == 0) { scroller.AddCell(ScrollerDataType.Header, i); } } scroller.Restart(); scroller.lockType = EnhanceLockType.KeepVertical; } }