From 2dd1841d03a730d3d369092c2a3ad656cee4bf64 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期四, 07 五月 2026 15:11:38 +0800
Subject: [PATCH] 512 跨服演武场
---
Main/System/Arena/ArenaWin.cs | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 206 insertions(+), 17 deletions(-)
diff --git a/Main/System/Arena/ArenaWin.cs b/Main/System/Arena/ArenaWin.cs
index c5da720..9a437fa 100644
--- a/Main/System/Arena/ArenaWin.cs
+++ b/Main/System/Arena/ArenaWin.cs
@@ -3,8 +3,17 @@
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;
@@ -15,7 +24,21 @@
[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}";
@@ -23,7 +46,13 @@
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();
@@ -34,31 +63,140 @@
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);
-
- }
+ // 鍦╞ase.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()
@@ -66,6 +204,7 @@
base.OnPreClose();
RankModel.Instance.onRankRefresh -= OnRankRefresh;
scrollerController.OnRefreshCell -= OnRefreshCell;
+ scrollerControllerCross.OnRefreshCell -= OnRefreshCellCross;
ArenaManager.Instance.OnArenaMatchListEvent -= OnArenaMatchListEvent;
ArenaManager.Instance.OnUpdateArenaPlayerInfo -= OnUpdateArenaPlayerInfo;
ArenaManager.Instance.OnUpdateGameRecInfo -= OnUpdateGameRecInfo;
@@ -102,6 +241,18 @@
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();
@@ -126,6 +277,13 @@
DisplayDeployTroop();
funPresetBtn.SetActive(FuncPresetManager.Instance.IsPreShow());
+
+ // 璺ㄦ湇鏄剧ず
+ voucherCross.Display();
+ CreateScrollerCross();
+ DisplayMyRankCross();
+ DisplayTop3Cross();
+ funPresetBtnCross.SetActive(FuncPresetManager.Instance.IsPreShow());
}
void CreateScroller()
@@ -139,9 +297,25 @@
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()
@@ -152,12 +326,27 @@
}
}
+ 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();
+ }
}
}
--
Gitblit v1.8.0