using System.Collections.Generic;
|
using UnityEngine;
|
|
public class ArenaWin : UIBase
|
{
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] ButtonEx btnRecord;
|
[SerializeField] ButtonEx btnAward;
|
[SerializeField] ButtonEx btnChallage;
|
[SerializeField] RedpointBehaviour rpChallage;
|
[SerializeField] ButtonEx btnDeployTroops;
|
[SerializeField] List<ArenaPlayerTop3Cell> playerTop3Cells;
|
[SerializeField] ScrollerController scrollerController;
|
[SerializeField] ArenaPlayerRankCell myRankCell;
|
[SerializeField] ArenaChallengeVoucher voucher;
|
[HideInInspector] public int groupValue1 = 0; //一般用于跨服
|
[HideInInspector] public int groupValue2 = 0; //一般用于跨服
|
[HideInInspector] public string valueFormat = "{0}";
|
|
protected override void InitComponent()
|
{
|
base.InitComponent();
|
btnClose.SetListener(() => UIManager.Instance.CloseWindow<ArenaWin>());
|
btnAward.SetListener(() => UIManager.Instance.OpenWindow<ArenaAwardWin>());
|
btnRecord.SetListener(() =>
|
{
|
ArenaManager.Instance.SendViewGameRecPack();
|
UIManager.Instance.OpenWindow<ArenaRecordWin>();
|
});
|
btnChallage.SetListener(() =>
|
{
|
ArenaManager.Instance.SendArenaMatch();
|
UIManager.Instance.OpenWindow<ArenaChallengeWin>();
|
});
|
btnDeployTroops.SetListener(() =>
|
{
|
HeroUIManager.Instance.selectTeamType = TeamType.ArenaDefense;
|
UIManager.Instance.OpenWindow<HeroPosWin>(1); // 竞技场标签页
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
RankModel.Instance.ResetQueryParam();
|
RankModel.Instance.QueryRankByPage(ArenaManager.Instance.rankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID);
|
rpChallage.redpointId = ArenaManager.Instance.GetRedPonitId(1);
|
}
|
|
protected override void NextFrameAfterOpen()
|
{
|
RankModel.Instance.onRankRefresh += OnRankRefresh;
|
scrollerController.OnRefreshCell += OnRefreshCell;
|
ArenaManager.Instance.OnArenaMatchListEvent += OnArenaMatchListEvent;
|
ArenaManager.Instance.OnUpdateArenaPlayerInfo += OnUpdateArenaPlayerInfo;
|
ArenaManager.Instance.OnUpdateGameRecInfo += OnUpdateGameRecInfo;
|
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
base.OnPreClose();
|
RankModel.Instance.onRankRefresh -= OnRankRefresh;
|
scrollerController.OnRefreshCell -= OnRefreshCell;
|
ArenaManager.Instance.OnArenaMatchListEvent -= OnArenaMatchListEvent;
|
ArenaManager.Instance.OnUpdateArenaPlayerInfo -= OnUpdateArenaPlayerInfo;
|
ArenaManager.Instance.OnUpdateGameRecInfo -= OnUpdateGameRecInfo;
|
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
|
}
|
|
private void PlayerDataRefresh(PlayerDataType type)
|
{
|
if (type != PlayerDataType.ChallengeVoucher)
|
return;
|
Display();
|
}
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<ArenaPlayerRankCell>();
|
_cell.Display(ArenaManager.Instance.rankType, cell.index + 1, valueFormat);
|
RankModel.Instance.ListenRankPage(ArenaManager.Instance.rankType, cell.index, groupValue1, groupValue2);
|
}
|
|
private void OnUpdateArenaPlayerInfo()
|
{
|
Display();
|
}
|
|
private void OnArenaMatchListEvent()
|
{
|
Display();
|
}
|
|
private void OnUpdateGameRecInfo()
|
{
|
Display();
|
}
|
|
private void Display()
|
{
|
voucher.Display();
|
CreateScroller();
|
DisplayMyRank();
|
DisplayTop3();
|
}
|
|
void CreateScroller()
|
{
|
scrollerController.Refresh();
|
var cnt = RankModel.Instance.GetRankShowMaxCnt(ArenaManager.Instance.rankType);
|
for (int i = 3; i < cnt; i++)
|
{
|
scrollerController.AddCell(ScrollerDataType.Header, i);
|
}
|
scrollerController.Restart();
|
}
|
|
void DisplayMyRank()
|
{
|
myRankCell.Display(ArenaManager.Instance.rankType, 0, ArenaManager.Instance.score.ToString());
|
}
|
|
void DisplayTop3()
|
{
|
for (int i = 0; i < playerTop3Cells.Count; i++)
|
{
|
playerTop3Cells[i].Display(ArenaManager.Instance.rankType, i + 1);
|
}
|
}
|
|
void OnRankRefresh(int type)
|
{
|
if (type != ArenaManager.Instance.rankType)
|
return;
|
DisplayTop3();
|
scrollerController.m_Scorller.RefreshActiveCellViews();
|
DisplayMyRank();
|
}
|
}
|