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 = seasonEndDate - 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);
|
}
|
}
|