| | |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | |
| | | public class ArenaWin : UIBase |
| | | public class ArenaWin : FunctionsBaseWin |
| | | { |
| | | [SerializeField] TextEx txtTip; |
| | | [SerializeField] TextEx txtCrossTip; |
| | | |
| | | [SerializeField] Transform transLocalRank; |
| | | [SerializeField] Transform transLocalButton; |
| | | [SerializeField] Transform transLocalCrossButton; |
| | | [SerializeField] ButtonEx btnCrossAward; |
| | | [SerializeField] Button btnFunPresetCross; |
| | | |
| | | [SerializeField] ButtonEx btnRecord; |
| | | [SerializeField] ButtonEx btnAward; |
| | | [SerializeField] ButtonEx btnChallage; |
| | |
| | | [SerializeField] ArenaPlayerRankCell myRankCell; |
| | | [SerializeField] ArenaChallengeVoucher voucher; |
| | | [SerializeField] Button funPresetBtn; |
| | | |
| | | |
| | | //跨服排行 |
| | | [SerializeField] Transform transCrossRank; |
| | | [SerializeField] ButtonEx btnRecordCross; |
| | | [SerializeField] ButtonEx btnAwardCross; |
| | | [SerializeField] ButtonEx btnChallageCross; |
| | | [SerializeField] RedpointBehaviour rpChallageCross; |
| | | [SerializeField] List<ArenaPlayerTop3Cell> playerTop3CellsCross; |
| | | [SerializeField] ScrollerController scrollerControllerCross; |
| | | [SerializeField] ArenaPlayerRankCell myRankCellCross; |
| | | [SerializeField] ArenaChallengeVoucher voucherCross; |
| | | [SerializeField] Button funPresetBtnCross; |
| | | [SerializeField] Button serversBtn; |
| | | |
| | | |
| | | [HideInInspector] public int groupValue1 = 0; //一般用于跨服 |
| | | [HideInInspector] public int groupValue2 = 0; //一般用于跨服 |
| | | [HideInInspector] public string valueFormat = "{0}"; |
| | |
| | | protected override void InitComponent() |
| | | { |
| | | base.InitComponent(); |
| | | btnAward.SetListener(() => UIManager.Instance.OpenWindow<ArenaAwardWin>()); |
| | | btnAward.SetListener(() => |
| | | { |
| | | if (ArenaManager.Instance.IsOpenCrossServer()) |
| | | UIManager.Instance.OpenWindow<ArenaCrossAwardWin>(); |
| | | else |
| | | UIManager.Instance.OpenWindow<ArenaAwardWin>(); |
| | | }); |
| | | btnRecord.SetListener(() => |
| | | { |
| | | ArenaManager.Instance.SendViewGameRecPack(); |
| | |
| | | ArenaManager.Instance.SendArenaMatch(); |
| | | UIManager.Instance.OpenWindow<ArenaChallengeWin>(); |
| | | }); |
| | | funPresetBtn.AddListener(()=> |
| | | funPresetBtn.AddListener(() => |
| | | { |
| | | FuncPresetManager.Instance.ClickBattlePreset((int)BattlePreSetType.Arena); |
| | | }); |
| | | btnCrossAward.SetListener(() => |
| | | { |
| | | if (ArenaManager.Instance.IsOpenCrossServer()) |
| | | UIManager.Instance.OpenWindow<ArenaCrossAwardWin>(); |
| | | else |
| | | UIManager.Instance.OpenWindow<ArenaAwardWin>(); |
| | | }); |
| | | btnFunPresetCross.AddListener(() => |
| | | { |
| | | FuncPresetManager.Instance.ClickBattlePreset((int)BattlePreSetType.Arena); |
| | | }); |
| | | |
| | | // 跨服按钮监听器 |
| | | btnAwardCross.SetListener(() => |
| | | { |
| | | UIManager.Instance.OpenWindow<ArenaCrossAwardWin>(); |
| | | }); |
| | | btnRecordCross.SetListener(() => |
| | | { |
| | | ArenaManager.Instance.SendViewGameRecPack(); |
| | | UIManager.Instance.OpenWindow<ArenaRecordWin>(); |
| | | }); |
| | | btnChallageCross.SetListener(() => |
| | | { |
| | | ArenaManager.Instance.SendArenaMatch(); |
| | | UIManager.Instance.OpenWindow<ArenaChallengeWin>(); |
| | | }); |
| | | funPresetBtnCross.AddListener(() => |
| | | { |
| | | FuncPresetManager.Instance.ClickBattlePreset((int)BattlePreSetType.Arena); |
| | | }); |
| | | serversBtn.SetListener(() => |
| | | { |
| | | UIHelper.ShowServersPanel(GuildManager.Instance.crossServerIDList); |
| | | }); |
| | | } |
| | | |
| | | 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); |
| | | |
| | | } |
| | | // 在base.OnPreOpen()之前设置functionOrder,避免被父类传入参数覆盖 |
| | | bool isOpenCrossServer = ArenaManager.Instance.IsOpenCrossServer(); |
| | | if (isOpenCrossServer) |
| | | { |
| | | functionOrder = 1; // 跨服排行 |
| | | } |
| | | else |
| | | { |
| | | functionOrder = 0; // 本服排行 |
| | | } |
| | | |
| | | protected override void NextFrameAfterOpen() |
| | | { |
| | | base.OnPreOpen(); |
| | | rpChallage.redpointId = ArenaManager.Instance.GetRedPonitId(1); |
| | | rpChallageCross.redpointId = ArenaManager.Instance.GetRedPonitId(1); |
| | | |
| | | RankModel.Instance.onRankRefresh += OnRankRefresh; |
| | | scrollerController.OnRefreshCell += OnRefreshCell; |
| | | scrollerControllerCross.OnRefreshCell += OnRefreshCellCross; |
| | | ArenaManager.Instance.OnArenaMatchListEvent += OnArenaMatchListEvent; |
| | | ArenaManager.Instance.OnUpdateArenaPlayerInfo += OnUpdateArenaPlayerInfo; |
| | | ArenaManager.Instance.OnUpdateGameRecInfo += OnUpdateGameRecInfo; |
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; |
| | | FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange; |
| | | |
| | | ShowRankByFunctionOrder(); |
| | | |
| | | txtTip.SetActive(!isOpenCrossServer); |
| | | txtCrossTip.SetActive(isOpenCrossServer); |
| | | |
| | | for (int i = 0; i < tabButtons.Length; i++) |
| | | { |
| | | tabButtons[i].SetActive(isOpenCrossServer); |
| | | } |
| | | |
| | | RankModel.Instance.ResetQueryParam(); |
| | | if (isOpenCrossServer) |
| | | { |
| | | var crossZoneInfo = CrossServerBaseManager.Instance.GetCrossZoneInfo(ArenaManager.Instance.DataMapID); |
| | | if (crossZoneInfo != null) |
| | | { |
| | | RankModel.Instance.QueryRankByPage(ArenaManager.Instance.corssRankType, groupValue1: (int)crossZoneInfo.ZoneID, crossServerID: (int)crossZoneInfo.CrossServerID, watchID: (int)PlayerDatas.Instance.baseData.PlayerID); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | RankModel.Instance.QueryRankByPage(ArenaManager.Instance.rankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID); |
| | | } |
| | | |
| | | Display(); |
| | | } |
| | | |
| | | protected override void OpenSubUIByTabIndex() |
| | | { |
| | | ShowRankByFunctionOrder(); |
| | | RankModel.Instance.ResetQueryParam(); |
| | | |
| | | // 重新查询对应排行 |
| | | bool isOpenCrossServer = ArenaManager.Instance.IsOpenCrossServer(); |
| | | if (functionOrder == 0 && isOpenCrossServer) |
| | | { |
| | | // 本服排行 |
| | | RankModel.Instance.QueryRankByPage(ArenaManager.Instance.rankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID); |
| | | } |
| | | else if (functionOrder == 1 && isOpenCrossServer) |
| | | { |
| | | // 跨服排行 |
| | | var crossZoneInfo = CrossServerBaseManager.Instance.GetCrossZoneInfo(ArenaManager.Instance.DataMapID); |
| | | if (crossZoneInfo != null) |
| | | { |
| | | RankModel.Instance.QueryRankByPage(ArenaManager.Instance.corssRankType, groupValue1: (int)crossZoneInfo.ZoneID, crossServerID: (int)crossZoneInfo.CrossServerID, watchID: (int)PlayerDatas.Instance.baseData.PlayerID); |
| | | } |
| | | } |
| | | } |
| | | |
| | | void ShowRankByFunctionOrder() |
| | | { |
| | | if (functionOrder == 0) |
| | | { |
| | | // 本服排行 |
| | | transLocalRank.SetActive(true); |
| | | bool isOpenCrossServer = ArenaManager.Instance.IsOpenCrossServer(); |
| | | transLocalButton.SetActive(!isOpenCrossServer); |
| | | transLocalCrossButton.SetActive(isOpenCrossServer); |
| | | transCrossRank.SetActive(false); |
| | | } |
| | | else |
| | | { |
| | | // 跨服排行 |
| | | transLocalRank.SetActive(false); |
| | | transCrossRank.SetActive(true); |
| | | } |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | |
| | | base.OnPreClose(); |
| | | RankModel.Instance.onRankRefresh -= OnRankRefresh; |
| | | scrollerController.OnRefreshCell -= OnRefreshCell; |
| | | scrollerControllerCross.OnRefreshCell -= OnRefreshCellCross; |
| | | ArenaManager.Instance.OnArenaMatchListEvent -= OnArenaMatchListEvent; |
| | | ArenaManager.Instance.OnUpdateArenaPlayerInfo -= OnUpdateArenaPlayerInfo; |
| | | ArenaManager.Instance.OnUpdateGameRecInfo -= OnUpdateGameRecInfo; |
| | |
| | | RankModel.Instance.ListenRankPage(ArenaManager.Instance.rankType, cell.index, groupValue1, groupValue2); |
| | | } |
| | | |
| | | void OnRefreshCellCross(ScrollerDataType type, CellView cell) |
| | | { |
| | | |
| | | var crossZoneInfo = CrossServerBaseManager.Instance.GetCrossZoneInfo(ArenaManager.Instance.DataMapID); |
| | | int zoneID = crossZoneInfo != null ? (int)crossZoneInfo.ZoneID : 0; |
| | | int crossServerID = crossZoneInfo != null ? (int)crossZoneInfo.CrossServerID : 0; |
| | | |
| | | var _cell = cell.GetComponent<ArenaPlayerRankCell>(); |
| | | _cell.DisplayCross(ArenaManager.Instance.corssRankType, cell.index + 1, valueFormat); |
| | | RankModel.Instance.ListenRankPage(ArenaManager.Instance.corssRankType, cell.index, zoneID, 0, crossServerID); |
| | | } |
| | | |
| | | private void OnUpdateArenaPlayerInfo() |
| | | { |
| | | Display(); |
| | |
| | | DisplayDeployTroop(); |
| | | |
| | | funPresetBtn.SetActive(FuncPresetManager.Instance.IsPreShow()); |
| | | |
| | | // 跨服显示 |
| | | voucherCross.Display(); |
| | | CreateScrollerCross(); |
| | | DisplayMyRankCross(); |
| | | DisplayTop3Cross(); |
| | | funPresetBtnCross.SetActive(FuncPresetManager.Instance.IsPreShow()); |
| | | } |
| | | |
| | | void CreateScroller() |
| | |
| | | scrollerController.Restart(); |
| | | } |
| | | |
| | | void CreateScrollerCross() |
| | | { |
| | | scrollerControllerCross.Refresh(); |
| | | var cnt = RankModel.Instance.GetRankShowMaxCnt(ArenaManager.Instance.corssRankType); |
| | | for (int i = 3; i < cnt; i++) |
| | | { |
| | | scrollerControllerCross.AddCell(ScrollerDataType.Header, i); |
| | | } |
| | | scrollerControllerCross.Restart(); |
| | | } |
| | | |
| | | void DisplayMyRank() |
| | | { |
| | | myRankCell.Display(ArenaManager.Instance.rankType, 0, ArenaManager.Instance.score.ToString()); |
| | | } |
| | | |
| | | void DisplayMyRankCross() |
| | | { |
| | | myRankCellCross.DisplayCross(ArenaManager.Instance.corssRankType, 0, ArenaManager.Instance.score.ToString()); |
| | | } |
| | | |
| | | void DisplayTop3() |
| | |
| | | } |
| | | } |
| | | |
| | | void DisplayTop3Cross() |
| | | { |
| | | for (int i = 0; i < playerTop3CellsCross.Count; i++) |
| | | { |
| | | playerTop3CellsCross[i].DisplayCross(ArenaManager.Instance.corssRankType, i + 1); |
| | | } |
| | | } |
| | | |
| | | void OnRankRefresh(int type) |
| | | { |
| | | if (type != ArenaManager.Instance.rankType) |
| | | return; |
| | | DisplayTop3(); |
| | | scrollerController.m_Scorller.RefreshActiveCellViews(); |
| | | DisplayMyRank(); |
| | | if (type == ArenaManager.Instance.rankType) |
| | | { |
| | | DisplayTop3(); |
| | | scrollerController.m_Scorller.RefreshActiveCellViews(); |
| | | DisplayMyRank(); |
| | | } |
| | | else if (type == ArenaManager.Instance.corssRankType) |
| | | { |
| | | DisplayTop3Cross(); |
| | | scrollerControllerCross.m_Scorller.RefreshActiveCellViews(); |
| | | DisplayMyRankCross(); |
| | | } |
| | | } |
| | | } |