using System.Collections.Generic;
|
using UnityEngine;
|
|
public class HeroReturnRankWin : FunctionsBaseWin
|
{
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] RectTransform rankRect;
|
[SerializeField] RectTransform awardRect;
|
[SerializeField] TextEx timeText;
|
|
|
|
[Header("排行")]
|
[SerializeField] ScrollerController rankScroller;
|
[SerializeField] List<HeroReturnRankTop3Cell> playerTop3Cells;
|
[SerializeField] HeroReturnRankCell myRankCell;
|
[HideInInspector] public string valueFormat = "{0}";
|
[Header("奖励")]
|
// [SerializeField] TextEx txtCountdown;
|
[SerializeField] ScrollerController awardScroller;
|
[SerializeField] ImageEx heroImage;
|
[SerializeField] TextEx myRankNumText;
|
[SerializeField] TextEx myCallCntText;
|
[SerializeField] TextEx timeText1;
|
|
HeroReturnManager manager => HeroReturnManager.Instance;
|
protected override void InitComponent()
|
{
|
base.InitComponent();
|
btnClose.SetListener(CloseWindow);
|
}
|
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
RankModel.Instance.ResetQueryParam();
|
RankModel.Instance.QueryRankByPage(manager.sendRankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, groupValue1: manager.actNum);
|
|
RankModel.Instance.onRankRefresh += OnRankRefresh;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
rankScroller.OnRefreshCell += OnRefreshCell;
|
awardScroller.OnRefreshCell += OnRefreshAwardCell;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
base.OnPreClose();
|
RankModel.Instance.onRankRefresh -= OnRankRefresh;
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
rankScroller.OnRefreshCell -= OnRefreshCell;
|
awardScroller.OnRefreshCell -= OnRefreshAwardCell;
|
}
|
|
void OnRankRefresh(int type)
|
{
|
RankRefresh();
|
}
|
|
void RankRefresh()
|
{
|
ShowTop3();
|
rankScroller.m_Scorller.RefreshActiveCellViews();
|
DisplayMyRank();
|
DisplayAwardMyRank();
|
}
|
|
void CreateRankScroller()
|
{
|
rankScroller.Refresh();
|
var cnt = RankModel.Instance.GetRankShowMaxCnt(manager.sendRankType);
|
for (int i = 3; i < cnt; i++)
|
{
|
rankScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
rankScroller.Restart();
|
}
|
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<HeroReturnRankCell>();
|
_cell.Display(manager.loadRankType, cell.index + 1, valueFormat);
|
RankModel.Instance.ListenRankPage(manager.sendRankType, cell.index, groupValue1: manager.actNum);
|
}
|
|
private void OnSecondEvent()
|
{
|
manager.GetActTimeStr(timeText);
|
manager.GetActTimeStr(timeText1);
|
}
|
|
protected override void OpenSubUIByTabIndex()
|
{
|
rankRect.SetActive(functionOrder == 0);
|
awardRect.SetActive(functionOrder == 1);
|
Display();
|
}
|
|
public void Display()
|
{
|
int heroID = manager.GetFirstHeroId();
|
var artConfig = ActHeroReturnArtConfig.Get(heroID);
|
if (artConfig == null) return;
|
|
if (functionOrder == 0)
|
{
|
ShowTop3();
|
CreateRankScroller();
|
DisplayMyRank();
|
}
|
else
|
{
|
CreateAwardScroller();
|
heroImage.SetSprite(artConfig.RankAwardHeroImage);
|
heroImage.SetNativeSize();
|
DisplayAwardMyRank();
|
}
|
OnSecondEvent();
|
}
|
|
private void DisplayMyRank()
|
{
|
myRankCell.Display(manager.loadRankType, 0, valueFormat);
|
}
|
|
void ShowTop3()
|
{
|
for (int i = 0; i < playerTop3Cells.Count; i++)
|
{
|
playerTop3Cells[i].Display(manager.loadRankType, i + 1);
|
}
|
}
|
|
void DisplayAwardMyRank()
|
{
|
|
RankData rankData = RankModel.Instance.GetMyRank(manager.loadRankType);
|
if (rankData == null)
|
{
|
myRankNumText.text = Language.Get("L1045");
|
myCallCntText.text = "0";
|
return;
|
}
|
myRankNumText.text = Language.Get("WarlordPavilion12", rankData.rank);
|
myCallCntText.text = string.Format(valueFormat, UIHelper.ReplaceLargeNum(rankData.cmpValue));
|
}
|
|
int billTempID;
|
private void CreateAwardScroller()
|
{
|
var act = manager.GetOperationHeroAppearInfo();
|
if (act == null) return;
|
|
var config = ActHeroAppearConfig.Get(act.CfgID);
|
if (config == null) return;
|
|
billTempID = config.BillTempID;
|
var list = ActBillboardAwardConfig.GetRankASortList(billTempID);
|
if (list == null) return;
|
|
awardScroller.Refresh();
|
for (int i = 0; i < list.Count; i++)
|
{
|
awardScroller.AddCell(ScrollerDataType.Header, list[i]);
|
}
|
awardScroller.Restart();
|
}
|
|
private void OnRefreshAwardCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<HeroReturnRankAwardCell>();
|
_cell?.Display(cell.index, billTempID);
|
}
|
}
|