using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
public class TianziBillboradRankWin : FunctionsBaseWin
|
{
|
[Header("通用部分")]
|
[SerializeField] Transform transRank;
|
[SerializeField] Transform transAward;
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] TextEx txtTitle;
|
[SerializeField] TianziBillboradPlayerRankCell myRankCell;
|
[HideInInspector] public string valueFormat = "{0}";
|
|
[Header("奖励")]
|
[SerializeField] TextEx txtCountdown;
|
[SerializeField] ScrollerController scrAward;
|
[Header("排行")]
|
[SerializeField] List<TianziBillboradPlayerTop3Cell> playerTop3Cells;
|
[SerializeField] ScrollerController scrollerController;
|
[HideInInspector] public int groupValue1 = 0; //一般用于跨服
|
[HideInInspector] public int groupValue2 = 0; //一般用于跨服
|
TianziBillboradManager model { get { return TianziBillboradManager.Instance; } }
|
protected override void InitComponent()
|
{
|
base.InitComponent();
|
btnClose.SetListener(CloseWindow);
|
}
|
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
tabButtons[functionOrder].SelectBtn(true);
|
RankModel.Instance.ResetQueryParam();
|
RankModel.Instance.QueryRankByPage(model.rankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID);
|
RankModel.Instance.onRankRefresh += OnRankRefresh;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
scrollerController.OnRefreshCell += OnRefreshCell;
|
scrAward.OnRefreshCell += OnRefreshAwardCell;
|
model.UpdateTianziKYInfoExent += OnUpdateTianziKYInfoExent;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
base.OnPreClose();
|
model.UpdateTianziKYInfoExent -= OnUpdateTianziKYInfoExent;
|
RankModel.Instance.onRankRefresh -= OnRankRefresh;
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
scrollerController.OnRefreshCell -= OnRefreshCell;
|
scrAward.OnRefreshCell -= OnRefreshAwardCell;
|
}
|
|
private void OnUpdateTianziKYInfoExent()
|
{
|
Refresh();
|
}
|
|
private void OnSecondEvent()
|
{
|
DateTime endDay = TimeUtility.ServerNow.AddDays(1).Date;
|
TimeSpan remainingTime = endDay - TimeUtility.ServerNow;
|
int remainingSeconds = (int)remainingTime.TotalSeconds;
|
if (remainingSeconds > 0)
|
{
|
string countdownText = TimeUtility.SecondsToHMS(remainingSeconds);
|
txtCountdown.SetActive(true);
|
txtCountdown.text = Language.Get("Arena14", countdownText);
|
}
|
else
|
{
|
txtCountdown.SetActive(false);
|
}
|
}
|
|
void OnRankRefresh(int type)
|
{
|
Refresh();
|
}
|
|
protected override void OpenSubUIByTabIndex()
|
{
|
TianziBillboradManager.Instance.nowTabIndex = functionOrder;
|
transRank.SetActive(functionOrder == 0);
|
transAward.SetActive(functionOrder == 1);
|
Display();
|
}
|
|
private void OnRefreshAwardCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<TianziBillboradAwardCell>();
|
_cell?.Display(cell.index);
|
}
|
|
void Refresh()
|
{
|
ShowTop3();
|
scrollerController.m_Scorller.RefreshActiveCellViews();
|
DisplayMyRank();
|
}
|
|
private void Display()
|
{
|
txtTitle.text = Language.Get(functionOrder == 0 ? "L1118" : "Arena04");
|
if (functionOrder == 0)
|
{
|
ShowTop3();
|
CreateScroller();
|
}
|
else
|
{
|
CreateAwardScroller();
|
OnSecondEvent();
|
}
|
DisplayMyRank();
|
}
|
void CreateScroller()
|
{
|
scrollerController.Refresh();
|
var cnt = RankModel.Instance.GetRankShowMaxCnt(model.rankType);
|
for (int i = 3; i < cnt; i++)
|
{
|
scrollerController.AddCell(ScrollerDataType.Header, i);
|
}
|
scrollerController.Restart();
|
}
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<TianziBillboradPlayerRankCell>();
|
_cell.Display(model.rankType, cell.index + 1, valueFormat);
|
RankModel.Instance.ListenRankPage(model.rankType, cell.index, groupValue1, groupValue2);
|
}
|
|
private void CreateAwardScroller()
|
{
|
scrAward.Refresh();
|
Dictionary<int, int[][]> rewardDict = model.rankAwards;
|
if (!rewardDict.IsNullOrEmpty())
|
{
|
var list = rewardDict.Keys.ToList();
|
list.Sort();
|
for (int i = 0; i < list.Count; i++)
|
{
|
CellInfo cellInfo = new CellInfo();
|
scrAward.AddCell(ScrollerDataType.Header, i, cellInfo);
|
}
|
}
|
scrAward.Restart();
|
}
|
|
private void DisplayMyRank()
|
{
|
myRankCell.Display(model.rankType, 0, valueFormat);
|
}
|
|
void ShowTop3()
|
{
|
for (int i = 0; i < playerTop3Cells.Count; i++)
|
{
|
playerTop3Cells[i].Display(model.rankType, i + 1);
|
}
|
}
|
}
|