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