using UnityEngine; public class FestivalActivityCheckInWin : UIBase { [SerializeField] ButtonEx closeButton; [SerializeField] TextEx timeText; [SerializeField] FestivalActivityCheckInCell[] cells; FestivalActivityCheckInManager manager => FestivalActivityCheckInManager.Instance; protected override void InitComponent() { closeButton.SetListener(CloseWindow); } protected override void OnPreOpen() { GeneralActInfoManager.Instance.OnUpdateActSignInfosEvent += OnUpdateActSignInfosEvent; TimeMgr.Instance.OnDayEvent += OnDayEvent; GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; Display(); } protected override void OnPreClose() { GeneralActInfoManager.Instance.OnUpdateActSignInfosEvent -= OnUpdateActSignInfosEvent; TimeMgr.Instance.OnDayEvent -= OnDayEvent; GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; } private void OnDayEvent() { Display(); } private void OnUpdateActSignInfosEvent(int arg1, int arg2) { Display(); } private void OnSecondEvent() { manager.GetActTimeStr(timeText); } private void Display() { if (!manager.GetActInfo(out var act, out var config)) return; int templateID = config.SignTempID; var list = ActSignAwardConfig.GetDayNumSortList(templateID); if (list == null) return; for (int i = 0; i < cells.Length; i++) { if (i < list.Count) { cells[i].SetActive(true); cells[i].Display(templateID, list[i]); } else { cells[i].SetActive(false); } } OnSecondEvent(); } }