From 9e40cf7d1390e13bc90acf23c30eb002744fd6d4 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期二, 21 十月 2025 19:16:06 +0800
Subject: [PATCH] 143 演武场-客户端 修改挑战界面,演武场布阵的显隐,达到条件才能切出非主线任务
---
 Main/System/Arena/ArenaWin.cs               |   21 +++++++++-
 Main/System/Main/MainWin.cs                 |   22 ++++++----
 Main/System/ChallengeTab/ChallengeTabWin.cs |   12 ++++--
 Main/System/Arena/ArenaManager.cs           |    1 
 Main/System/Battle/ArenaBattleWin.cs        |   20 ++++++++-
 5 files changed, 58 insertions(+), 18 deletions(-)
diff --git a/Main/System/Arena/ArenaManager.cs b/Main/System/Arena/ArenaManager.cs
index c1baa85..b9acc8d 100644
--- a/Main/System/Arena/ArenaManager.cs
+++ b/Main/System/Arena/ArenaManager.cs
@@ -7,6 +7,7 @@
 {
     public readonly int rankType = 1;    // 姒滃崟绫诲瀷
     public readonly int funcId = 27;    // 鍔熻兘Id
+    public readonly int DeployTroopsFuncId = 32;    // 甯冮樀鍔熻兘ID
     public readonly int recType = 308;  // 婕旀鍦虹帺瀹舵寫鎴樿褰曠被鍨� 308
     public readonly int ChallengeMoneyType = 53;
     public readonly int NeedChallengeMoneyCnt = 1;
diff --git a/Main/System/Arena/ArenaWin.cs b/Main/System/Arena/ArenaWin.cs
index c2898f7..4ab33ed 100644
--- a/Main/System/Arena/ArenaWin.cs
+++ b/Main/System/Arena/ArenaWin.cs
@@ -1,9 +1,9 @@
+using System;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class ArenaWin : UIBase
 {
-    [SerializeField] ButtonEx btnClose;
     [SerializeField] ButtonEx btnRecord;
     [SerializeField] ButtonEx btnAward;
     [SerializeField] ButtonEx btnChallage;
@@ -20,7 +20,6 @@
     protected override void InitComponent()
     {
         base.InitComponent();
-        btnClose.SetListener(() => UIManager.Instance.CloseWindow<ArenaWin>());
         btnAward.SetListener(() => UIManager.Instance.OpenWindow<ArenaAwardWin>());
         btnRecord.SetListener(() =>
         {
@@ -55,6 +54,7 @@
         ArenaManager.Instance.OnUpdateArenaPlayerInfo += OnUpdateArenaPlayerInfo;
         ArenaManager.Instance.OnUpdateGameRecInfo += OnUpdateGameRecInfo;
         PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
+        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
         Display();
     }
 
@@ -67,7 +67,23 @@
         ArenaManager.Instance.OnUpdateArenaPlayerInfo -= OnUpdateArenaPlayerInfo;
         ArenaManager.Instance.OnUpdateGameRecInfo -= OnUpdateGameRecInfo;
         PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
+        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
     }
+
+    private void OnFuncStateChange(int obj)
+    {
+        if (obj == ArenaManager.Instance.DeployTroopsFuncId)
+        {
+            DisplayDeployTroop();
+        }
+    }
+
+    void DisplayDeployTroop()
+    {
+        bool isOpen = FuncOpen.Instance.IsFuncOpen(ArenaManager.Instance.DeployTroopsFuncId);
+        btnDeployTroops.SetActive(isOpen);
+    }
+
 
     private void PlayerDataRefresh(PlayerDataType type)
     {
@@ -104,6 +120,7 @@
         CreateScroller();
         DisplayMyRank();
         DisplayTop3();
+        DisplayDeployTroop();
     }
 
     void CreateScroller()
diff --git a/Main/System/Battle/ArenaBattleWin.cs b/Main/System/Battle/ArenaBattleWin.cs
index c990c92..18574a8 100644
--- a/Main/System/Battle/ArenaBattleWin.cs
+++ b/Main/System/Battle/ArenaBattleWin.cs
@@ -76,7 +76,7 @@
         BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField;
         EventBroadcast.Instance.AddListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
         EventBroadcast.Instance.AddListener<string, JsonData>(EventName.BATTLE_END, OnBattleEnd);
-        //UIManager.Instance.CloseWindow<MainWin>();
+        UIManager.Instance.CloseWindow<BattleWin>();
     }
 
     protected override void OnPreClose()
@@ -87,12 +87,12 @@
         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);
+        UIManager.Instance.OpenWindow<BattleWin>();
     }
 
     private void OnTabChangeEvent()
     {
-        UIManager.Instance.CloseWindow<ArenaBattleWin>(true);
+        UIManager.Instance.CloseWindow<ArenaBattleWin>();
     }
 
     private void OnBattleEnd(string guid, JsonData endData)
@@ -299,4 +299,18 @@
             return;
         txtWaveInfo.text = Language.Get("BoneField09", battleField.round, battleField.turnMax);
     }
+
+    public void DisplayBattleWin()
+    {
+        if (!UIManager.Instance.IsOpened<BattleWin>())
+        {
+            BattleWin battleWin = UIManager.Instance.OpenWindow<BattleWin>();
+            battleWin.SetBattleField(BattleManager.Instance.storyBattleField);
+        }
+        else
+        {
+            BattleWin battleWin = UIManager.Instance.GetUI<BattleWin>();
+            battleWin.SetBattleField(BattleManager.Instance.storyBattleField);
+        }
+    }
 }
diff --git a/Main/System/ChallengeTab/ChallengeTabWin.cs b/Main/System/ChallengeTab/ChallengeTabWin.cs
index 968824d..6a302fb 100644
--- a/Main/System/ChallengeTab/ChallengeTabWin.cs
+++ b/Main/System/ChallengeTab/ChallengeTabWin.cs
@@ -93,12 +93,16 @@
             BattleField arenaBattle = BattleManager.Instance.GetBattleFieldByMapID(3);
             if (arenaBattle != null)
             {
-                ArenaBattleWin fsBattleWin = UIManager.Instance.GetUI<ArenaBattleWin>();
-                if (null == fsBattleWin)
+                ArenaBattleWin battleWin;
+                if (!UIManager.Instance.IsOpened<ArenaBattleWin>())
                 {
-                    fsBattleWin = UIManager.Instance.OpenWindow<ArenaBattleWin>();
+                    battleWin = UIManager.Instance.OpenWindow<ArenaBattleWin>();
                 }
-                fsBattleWin.SetBattleField(arenaBattle);
+                else
+                {
+                    battleWin = UIManager.Instance.GetUI<ArenaBattleWin>();
+                }
+                battleWin.SetBattleField(arenaBattle);
             }
             else
             {
diff --git a/Main/System/Main/MainWin.cs b/Main/System/Main/MainWin.cs
index a629719..1ceda2d 100644
--- a/Main/System/Main/MainWin.cs
+++ b/Main/System/Main/MainWin.cs
@@ -123,13 +123,6 @@
 
     protected override void SelectBottomTab(int index)
     {
-        bool isOtherBattleInProgress = BattleManager.Instance.IsOtherBattleInProgress();
-        if (isOtherBattleInProgress)
-        {
-            // 濡傛灉姝e湪闈炰富绾挎垬鏂椾腑锛屾病婊¤冻瑙i攣鏉′欢鍒欎笉鍏佽鍒囨崲
-        }
-        DisplayTopBar(index);
-
         if (index == 3)
         {
             //鎸戞垬鐗规畩鏄剧ず閫昏緫
@@ -137,7 +130,7 @@
             return;
         }
 
-
+        TabChangeEvent?.Invoke();
 
         // 濡傛灉鐐瑰嚮褰撳墠宸查�変腑鐨勬爣绛撅紝涓嶅仛澶勭悊
         if (functionOrder == index && currentSubUI != null)
@@ -155,7 +148,6 @@
         // 鏍规嵁閫変腑鐨勬爣绛炬墦寮�瀵瑰簲鐨勭晫闈�
         OpenSubUIByTabIndex();
 
-        TabChangeEvent?.Invoke();
     }
 
     //鎴樻枟鎸夐挳鍔ㄧ敾
@@ -237,6 +229,16 @@
     protected override void OnTabButtonClicked(int index)
     {
         this.index = index;
+        int funcId = 32;
+        bool isOtherBattleInProgress = BattleManager.Instance.IsOtherBattleInProgress();
+        // 濡傛灉姝e湪闈炰富绾挎垬鏂椾腑锛屾病婊¤冻瑙i攣鏉′欢鍒欎笉鍏佽鍒囨崲
+        if (isOtherBattleInProgress && !FuncOpen.Instance.IsFuncOpen(funcId))
+        {
+            string tip = FuncOpen.Instance.GetErrorTip(funcId);
+            SysNotifyMgr.Instance.ShowTip("SwitchOutOfBattle", tip);
+            tabButtons[functionOrder].SelectBtn();
+            return;
+        }
 
 
         if (index == 0)
@@ -253,6 +255,8 @@
             UIManager.Instance.OpenWindow<GuildJoinWin>();
             return;
         }
+
+        DisplayTopBar(index);
         SelectBottomTab(index);
     }
 
--
Gitblit v1.8.0