//-------------------------------------------------------- // [Author]: 玩个游戏 // [ Date ]: Tuesday, July 24, 2018 //-------------------------------------------------------- using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //通用玩家个人排行榜 public class PlayerRankWin : UIBase { [SerializeField] List 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(); _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(); } }