//--------------------------------------------------------
|
// [Author]: 玩个游戏
|
// [ Date ]: Tuesday, July 24, 2018
|
//--------------------------------------------------------
|
|
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
//通用玩家个人排行榜
|
public class PlayerRankWin : UIBase
|
{
|
[SerializeField] List<PlayerTop3Cell> playerTop3Cells;
|
[SerializeField] ScrollerController scrollerController;
|
[SerializeField] Text cmpStrText; //排行榜排名内容,如战力,通过层数等
|
[SerializeField] PlayerRankCell myRankCell;
|
[SerializeField] Button btnClose;
|
|
|
[HideInInspector] public int rankType;
|
[HideInInspector] public string valueFormat = "{0}";
|
[HideInInspector] public int groupValue1 = 0; //一般用于跨服
|
[HideInInspector] public int groupValue2 = 0; //一般用于跨服
|
|
protected override void InitComponent()
|
{
|
btnClose.AddListener(()=>
|
{
|
CloseWindow();
|
});
|
}
|
|
protected override void NextFrameAfterOpen()
|
{
|
RankModel.Instance.onRankRefresh += OnRankRefresh;
|
scrollerController.OnRefreshCell += OnRefreshCell;
|
Refresh();
|
|
}
|
|
protected override void OnPreClose()
|
{
|
RankModel.Instance.onRankRefresh -= OnRankRefresh;
|
scrollerController.OnRefreshCell -= OnRefreshCell;
|
}
|
|
protected override void OnClose()
|
{
|
base.OnClose();
|
}
|
|
public override void Refresh()
|
{
|
cmpStrText.text = Language.Get("RankTypeName_" + rankType);
|
ShowTop3();
|
CreateScroller();
|
ShowMyRank();
|
}
|
|
void CreateScroller()
|
{
|
scrollerController.Refresh();
|
var cnt = RankModel.Instance.GetRankShowMaxCnt(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<PlayerRankCell>();
|
_cell.Display(rankType, cell.index + 1, valueFormat);
|
RankModel.Instance.ListenRankPage(rankType, cell.index, groupValue1, groupValue2);
|
}
|
|
|
void ShowTop3()
|
{
|
for (int i = 0; i < playerTop3Cells.Count; i++)
|
{
|
playerTop3Cells[i].Display(functionOrder, i + 1);
|
}
|
}
|
|
void ShowMyRank()
|
{
|
myRankCell.Display(rankType, 0, valueFormat);
|
}
|
|
|
void OnRankRefresh(int type)
|
{
|
ShowTop3();
|
scrollerController.m_Scorller.RefreshActiveCellViews();
|
ShowMyRank();
|
}
|
|
void OnMyRankRefresh(int type)
|
{
|
ShowMyRank();
|
}
|
|
}
|