using System; using System.Collections.Generic; using System.Linq; using UnityEngine; public class ArenaAwardWin : FunctionsBaseWin { [SerializeField] ButtonEx btnClose; [SerializeField] TextEx txtCountdown; [SerializeField] ScrollerController scrAward; [SerializeField] ArenaPlayerRankCell myRankCell; [HideInInspector] public string valueFormat = "{0}"; protected override void InitComponent() { base.InitComponent(); btnClose.SetListener(() => UIManager.Instance.CloseWindow()); } protected override void OnPreOpen() { base.OnPreOpen(); ArenaManager.Instance.OnArenaMatchListEvent += OnArenaMatchListEvent; ArenaManager.Instance.OnUpdateArenaPlayerInfo += OnUpdateArenaPlayerInfo; ArenaManager.Instance.OnUpdateGameRecInfo += OnUpdateGameRecInfo; RankModel.Instance.onRankRefresh -= OnRankRefresh; GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; scrAward.OnRefreshCell += OnRefreshCell; Display(); } protected override void OnPreClose() { base.OnPreClose(); ArenaManager.Instance.OnArenaMatchListEvent -= OnArenaMatchListEvent; ArenaManager.Instance.OnUpdateArenaPlayerInfo -= OnUpdateArenaPlayerInfo; ArenaManager.Instance.OnUpdateGameRecInfo -= OnUpdateGameRecInfo; RankModel.Instance.onRankRefresh -= OnRankRefresh; GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; scrAward.OnRefreshCell -= OnRefreshCell; } private void OnSecondEvent() { ArenaManager.Instance.GetCurrentSeasonDates(out DateTime seasonStartDate, out DateTime seasonEndDate); TimeSpan remainingTime; if (functionOrder == 0) { remainingTime = seasonEndDate - TimeUtility.ServerNow; } else { DateTime endDay = TimeUtility.ServerNow.AddDays(1).Date; remainingTime = endDay - TimeUtility.ServerNow; } int remainingSeconds = (int)remainingTime.TotalSeconds; if (remainingSeconds > 0) { string countdownText = TimeUtility.SecondsToDHMSCHS(remainingSeconds); txtCountdown.SetActive(true); txtCountdown.text = Language.Get("Arena14", countdownText); } else { txtCountdown.SetActive(false); } } protected override void OpenSubUIByTabIndex() { ArenaManager.Instance.nowAwardTabIndex = functionOrder; Display(); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index, cell); } private void OnUpdateArenaPlayerInfo() { Display(); } private void OnArenaMatchListEvent() { Display(); } private void OnUpdateGameRecInfo() { Display(); } void OnRankRefresh(int type) { DisplayMyRank(); } private void Display() { CreateScroller(); DisplayMyRank(); OnSecondEvent(); } private void CreateScroller() { scrAward.Refresh(); Dictionary rewardDict = ArenaManager.Instance.GetArenaAwardDict(functionOrder); if (!rewardDict.IsNullOrEmpty()) { var list = rewardDict.Keys.ToList(); list.Sort(); for (int i = 0; i < list.Count; i++) { CellInfo cellInfo = new CellInfo(); cellInfo.infoInt1 = (int)functionOrder; scrAward.AddCell(ScrollerDataType.Header, i, cellInfo); } } scrAward.Restart(); } private void DisplayMyRank() { myRankCell.Display(ArenaManager.Instance.rankType, 0, valueFormat); } }