| //-------------------------------------------------------- | 
| //    [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(); | 
|     } | 
|   | 
| } |