From cbc808130160c05551c1acc83cd7507bcfebcba0 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期二, 21 十月 2025 14:42:48 +0800
Subject: [PATCH] 143 演武场-客户端 战斗支持切出界面,如果战斗没结束,还能通过入口回到战斗
---
Main/System/Battle/BattleManager.cs | 20 ++++++++++
Main/System/Main/MainWin.cs | 56 ++++++++++++++++++++++++++-
Main/System/ChallengeTab/ChallengeTabWin.cs | 15 +++++++
Main/System/Battle/ArenaBattleWin.cs | 11 +++++
4 files changed, 97 insertions(+), 5 deletions(-)
diff --git a/Main/System/Battle/ArenaBattleWin.cs b/Main/System/Battle/ArenaBattleWin.cs
index 27d7779..c990c92 100644
--- a/Main/System/Battle/ArenaBattleWin.cs
+++ b/Main/System/Battle/ArenaBattleWin.cs
@@ -1,4 +1,5 @@
-锘縰sing System.Collections.Generic;
+锘縰sing System;
+using System.Collections.Generic;
using LitJson;
using UnityEngine;
using UnityEngine.UI;
@@ -71,6 +72,7 @@
{
base.OnPreOpen();
// SetBattleField(BattleManager.Instance.storyBattleField);
+ MainWin.TabChangeEvent += OnTabChangeEvent;
BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField;
EventBroadcast.Instance.AddListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
EventBroadcast.Instance.AddListener<string, JsonData>(EventName.BATTLE_END, OnBattleEnd);
@@ -81,11 +83,18 @@
{
base.OnPreClose();
UIManager.Instance.CloseWindow<BattleHUDWin>();
+ MainWin.TabChangeEvent -= OnTabChangeEvent;
BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField;
EventBroadcast.Instance.RemoveListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
EventBroadcast.Instance.RemoveListener<string, JsonData>(EventName.BATTLE_END, OnBattleEnd);
//UIManager.Instance.OpenWindow<MainWin>(0);
}
+
+ private void OnTabChangeEvent()
+ {
+ UIManager.Instance.CloseWindow<ArenaBattleWin>(true);
+ }
+
private void OnBattleEnd(string guid, JsonData endData)
{
if (battleField != null && guid == battleField.guid)
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index 58a9b27..766ccb8 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -576,4 +576,24 @@
return null;
}
+
+ /// <summary>
+ /// 妫�鏌ユ槸鍚︽湁闈炰富绾挎垬鏂楋紙濡傜珵鎶�鍦恒�佺櫧楠ㄧ瓑锛夋鍦ㄨ繘琛�
+ /// </summary>
+ /// <returns>濡傛灉鏈変换浣曢潪涓荤嚎鎴樻枟涓旀湭缁撴潫锛屽垯杩斿洖true</returns>
+ public bool IsOtherBattleInProgress()
+ {
+ foreach (var kvp in battleFields)
+ {
+ BattleField battleField = kvp.Value;
+ // 妫�鏌ユ垬鍦烘槸鍚︽湁鏁堜笖灏氭湭缁撴潫
+ if (battleField == null || battleField.IsBattleFinish)
+ continue;
+ // MapID 1 (StoryBattleField) 鍜� 2 (StoryBossBattleField) 閮芥槸涓荤嚎
+ if (battleField.MapID == 1 || battleField.MapID == 2)
+ continue;
+ return true;
+ }
+ return false;
+ }
}
\ No newline at end of file
diff --git a/Main/System/ChallengeTab/ChallengeTabWin.cs b/Main/System/ChallengeTab/ChallengeTabWin.cs
index 60f67da..968824d 100644
--- a/Main/System/ChallengeTab/ChallengeTabWin.cs
+++ b/Main/System/ChallengeTab/ChallengeTabWin.cs
@@ -90,7 +90,20 @@
UIManager.Instance.CloseWindow<ChallengeTabWin>();
if (!FuncOpen.Instance.IsFuncOpen(funcId, true))
return;
- UIManager.Instance.OpenWindow<ArenaWin>();
+ BattleField arenaBattle = BattleManager.Instance.GetBattleFieldByMapID(3);
+ if (arenaBattle != null)
+ {
+ ArenaBattleWin fsBattleWin = UIManager.Instance.GetUI<ArenaBattleWin>();
+ if (null == fsBattleWin)
+ {
+ fsBattleWin = UIManager.Instance.OpenWindow<ArenaBattleWin>();
+ }
+ fsBattleWin.SetBattleField(arenaBattle);
+ }
+ else
+ {
+ UIManager.Instance.OpenWindow<ArenaWin>();
+ }
});
}
diff --git a/Main/System/Main/MainWin.cs b/Main/System/Main/MainWin.cs
index 6c3c56d..a629719 100644
--- a/Main/System/Main/MainWin.cs
+++ b/Main/System/Main/MainWin.cs
@@ -27,10 +27,12 @@
[SerializeField] UIEffectPlayer fightEffect;
[SerializeField] UIEffectPlayer openCloseAnim;
[SerializeField] FillTween cdTween;
+ int index = 0;
public bool isFirstOpen = true; //棣栨鎵撳紑
public Text hammerText;
+ public static event Action TabChangeEvent;
protected override void InitComponent()
{
base.InitComponent();
@@ -43,6 +45,7 @@
UpdateCurrency();
UpdatePlayerInfo();
RefreshFightBtn();
+ DisplayTopBar(index);
}
protected override void OnPreOpen()
@@ -50,6 +53,8 @@
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
AutoFightModel.Instance.OnFightEvent += OnSkillCast;
ChallengeTabWin.OnCloseChallengeTabWin += OnCloseChallengeTabWin;
+ BattleManager.Instance.onBattleFieldCreate += OnBattleFieldCreate;
+ BattleManager.Instance.onBattleFieldDestroy += OnBattleFieldDestroy;
base.OnPreOpen();
// 鍒锋柊UI
@@ -61,7 +66,19 @@
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
AutoFightModel.Instance.OnFightEvent -= OnSkillCast;
ChallengeTabWin.OnCloseChallengeTabWin -= OnCloseChallengeTabWin;
+ BattleManager.Instance.onBattleFieldCreate -= OnBattleFieldCreate;
+ BattleManager.Instance.onBattleFieldDestroy -= OnBattleFieldDestroy;
base.OnPreClose();
+ }
+
+ private void OnBattleFieldCreate(string guid, BattleField battleField)
+ {
+ Refresh();
+ }
+
+ private void OnBattleFieldDestroy(string guid, BattleField battleField)
+ {
+ Refresh();
}
private void OnCloseChallengeTabWin()
@@ -82,8 +99,37 @@
tabButtons[functionOrder].SelectBtn();
}
+ public void DisplayTopBar(int index)
+ {
+ bool isOtherBattleInProgress = BattleManager.Instance.IsOtherBattleInProgress();
+ switch (index)
+ {
+ case 0:
+ case 2:
+ topBar.SetActive(true);
+ break;
+ case 1:
+ case 4:
+ topBar.SetActive(false);
+ break;
+ case 3:
+ topBar.SetActive(!isOtherBattleInProgress);
+ break;
+ default:
+ topBar.SetActive(true);
+ break;
+ }
+ }
+
protected override void SelectBottomTab(int index)
{
+ bool isOtherBattleInProgress = BattleManager.Instance.IsOtherBattleInProgress();
+ if (isOtherBattleInProgress)
+ {
+ // 濡傛灉姝e湪闈炰富绾挎垬鏂椾腑锛屾病婊¤冻瑙i攣鏉′欢鍒欎笉鍏佽鍒囨崲
+ }
+ DisplayTopBar(index);
+
if (index == 3)
{
//鎸戞垬鐗规畩鏄剧ず閫昏緫
@@ -91,7 +137,8 @@
return;
}
- topBar.SetActive(index == 0 || index == 2);
+
+
// 濡傛灉鐐瑰嚮褰撳墠宸查�変腑鐨勬爣绛撅紝涓嶅仛澶勭悊
if (functionOrder == index && currentSubUI != null)
{
@@ -107,6 +154,8 @@
// 鏍规嵁閫変腑鐨勬爣绛炬墦寮�瀵瑰簲鐨勭晫闈�
OpenSubUIByTabIndex();
+
+ TabChangeEvent?.Invoke();
}
//鎴樻枟鎸夐挳鍔ㄧ敾
@@ -187,6 +236,9 @@
/// </summary>
protected override void OnTabButtonClicked(int index)
{
+ this.index = index;
+
+
if (index == 0)
{
if (currentSubUI != null && currentSubUI.name == "HomeWin")
@@ -201,8 +253,6 @@
UIManager.Instance.OpenWindow<GuildJoinWin>();
return;
}
-
-
SelectBottomTab(index);
}
--
Gitblit v1.8.0