| 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<ArenaAwardWin>()); | 
|     } | 
|   | 
|     protected override void OnPreOpen() | 
|     { | 
|         base.OnPreOpen(); | 
|         tabButtons[functionOrder].SelectBtn(true); | 
|         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<ArenaAwardCell>(); | 
|         _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<int, int[][]> 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); | 
|     } | 
| } |