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 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()); btnAward.SetListener(() => UIManager.Instance.OpenWindow()); btnRecord.SetListener(() => { ArenaManager.Instance.SendViewGameRecPack(); UIManager.Instance.OpenWindow(); }); btnChallage.SetListener(() => { ArenaManager.Instance.SendArenaMatch(); UIManager.Instance.OpenWindow(); }); btnDeployTroops.SetListener(() => { HeroUIManager.Instance.selectTeamType = TeamType.ArenaDefense; UIManager.Instance.OpenWindow(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(); _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(); } }