From b1f98c42a6b859b35c26e0722efb38a6e9c215be Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 22 十月 2025 11:25:33 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/Arena/ArenaWin.cs                    |   21 ++++++
 /dev/null                                        |   11 ---
 Main/System/Battle/BattleConst.cs                |    9 +++
 Main/System/Battle/BattleField/BattleRootNode.cs |    1 
 Main/System/Battle/BattleManager.cs              |   21 ++++++
 Main/System/Battle/BattleWin.cs                  |    6 ++
 Main/System/Main/MainWin.cs                      |   59 ++++++-------------
 Main/System/ChallengeTab/ChallengeTabWin.cs      |   16 +++--
 Main/System/Arena/ArenaManager.cs                |    1 
 Main/System/Battle/ArenaBattleWin.cs             |   20 +++++-
 10 files changed, 101 insertions(+), 64 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/Battle/BattleConst.cs b/Main/System/Battle/BattleConst.cs
index 397a394..78a5d56 100644
--- a/Main/System/Battle/BattleConst.cs
+++ b/Main/System/Battle/BattleConst.cs
@@ -9,6 +9,15 @@
         typeof(BattleWin),
         typeof(StoryBossBattleWin),
         typeof(ArenaBattleWin),
+        typeof(BoneFieldBattleWin),
+    };
+
+    public static Dictionary<string, string> battleNameToWinName = new Dictionary<string, string>()
+    {
+        { "StoryBattleField", "BattleWin" },
+        { "StoryBossBattleField", "StoryBossBattleWin" },
+        { "ArenaBattleField", "ArenaBattleWin" },
+        { "BoneBattleField", "BoneFieldBattleWin" },
     };
 
     public const int BattleStartEffectID = 1001; // Example effect ID for battle start
diff --git a/Main/System/Battle/BattleField/BattleRootNode.cs b/Main/System/Battle/BattleField/BattleRootNode.cs
index 14d2f00..198a2da 100644
--- a/Main/System/Battle/BattleField/BattleRootNode.cs
+++ b/Main/System/Battle/BattleField/BattleRootNode.cs
@@ -56,6 +56,7 @@
 		if (imgBackground != null)
 		{
 			imgBackground.texture = texture;
+			imgBackground.raycastTarget = false;
 			// imgBackground.SetNativeSize();
 		}
 	}
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index 732c309..906f27b 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -30,7 +30,7 @@
 
     public Action<string, BattleField> onBattleFieldCreate;
 
-    public Action<string, BattleField> onBattleFieldDestroy;
+    public Action onBattleFieldDestroy;
 
     public bool isWaitServerStory = false;  //涓荤嚎绛夋湇鍔$鍥炴姤 0425
 
@@ -532,7 +532,7 @@
 
         GameObject.DestroyImmediate(battleField.battleRootNode.gameObject);
 
-        onBattleFieldDestroy?.Invoke(battleField.guid, battleField);
+        onBattleFieldDestroy?.Invoke();
 
     }
 
@@ -605,4 +605,21 @@
         }
         return false;
     }
+
+    // 鑾峰彇褰撳墠姝e湪鏄剧ず鐨勬垬鏂楀満鏅悕绉帮紝濡傛灉娌℃湁鍒欒繑鍥炵┖瀛楃涓�
+    public string GetActiveBattleName()
+    {
+        foreach (var kvp in battleFields)
+        {
+            BattleField battleField = kvp.Value;
+            if (battleField == null)
+                continue;
+
+            var battleName = battleField.ToString();
+            if (BattleConst.battleNameToWinName.ContainsKey(battleName)
+            && UIManager.Instance.IsOpened(BattleConst.battleNameToWinName[battleName]))
+                return battleName;
+        }
+        return "";
+    }
 }
\ No newline at end of file
diff --git a/Main/System/Battle/BattleWin.cs b/Main/System/Battle/BattleWin.cs
index 2fda744..317c3d3 100644
--- a/Main/System/Battle/BattleWin.cs
+++ b/Main/System/Battle/BattleWin.cs
@@ -6,6 +6,7 @@
 {
     // 缁勪欢寮曠敤
     public Transform mountPoint;
+    [SerializeField] Button fightBtn;
 
     private BattleRootNode battleRootNode = null;
 
@@ -22,6 +23,11 @@
         // 鍒濆鍖栫粍浠跺紩鐢� 缁戝畾鎸夐挳绛塙I缁勪欢浜嬩欢
 
         btnStop.AddListener(PauseGame);
+
+        fightBtn.AddListener(()=>
+        {
+            UIManager.Instance.GetUI<MainWin>()?.ClickFunc(0);
+        });
     }
 
     private void PauseGame()
diff --git a/Main/System/ChallengeTab/ChallengeTabWin.cs b/Main/System/ChallengeTab/ChallengeTabWin.cs
index 968824d..bc04981 100644
--- a/Main/System/ChallengeTab/ChallengeTabWin.cs
+++ b/Main/System/ChallengeTab/ChallengeTabWin.cs
@@ -5,7 +5,7 @@
 {
     [SerializeField] ChallengeTabButton btnBoneField;
     [SerializeField] ChallengeTabButton btnArena;
-    public static Action OnCloseChallengeTabWin;
+    
     protected override void InitComponent()
     {
         base.InitComponent();
@@ -28,7 +28,7 @@
         TimeMgr.Instance.OnDayEvent -= OnDayEvent;
         FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
         PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
-        OnCloseChallengeTabWin?.Invoke();
+        UIManager.Instance.GetUI<MainWin>()?.RestoreFuncBtn();
     }
     private void OnDayEvent()
     {
@@ -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..76d15e1 100644
--- a/Main/System/Main/MainWin.cs
+++ b/Main/System/Main/MainWin.cs
@@ -27,7 +27,6 @@
     [SerializeField] UIEffectPlayer fightEffect;
     [SerializeField] UIEffectPlayer openCloseAnim;
     [SerializeField] FillTween cdTween;
-    int index = 0;
 
     public bool isFirstOpen = true; //棣栨鎵撳紑
     public Text hammerText;
@@ -45,14 +44,13 @@
         UpdateCurrency();
         UpdatePlayerInfo();
         RefreshFightBtn();
-        DisplayTopBar(index);
+        DisplayTopBar();
     }
 
     protected override void OnPreOpen()
     {
         PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
         AutoFightModel.Instance.OnFightEvent += OnSkillCast;
-        ChallengeTabWin.OnCloseChallengeTabWin += OnCloseChallengeTabWin;
         BattleManager.Instance.onBattleFieldCreate += OnBattleFieldCreate;
         BattleManager.Instance.onBattleFieldDestroy += OnBattleFieldDestroy;
         base.OnPreOpen();
@@ -65,7 +63,6 @@
     {
         PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
         AutoFightModel.Instance.OnFightEvent -= OnSkillCast;
-        ChallengeTabWin.OnCloseChallengeTabWin -= OnCloseChallengeTabWin;
         BattleManager.Instance.onBattleFieldCreate -= OnBattleFieldCreate;
         BattleManager.Instance.onBattleFieldDestroy -= OnBattleFieldDestroy;
         base.OnPreClose();
@@ -76,16 +73,11 @@
         Refresh();
     }
 
-    private void OnBattleFieldDestroy(string guid, BattleField battleField)
+    private void OnBattleFieldDestroy()
     {
         Refresh();
     }
 
-    private void OnCloseChallengeTabWin()
-    {
-        tabButtons[3].state = TitleBtnState.Normal;
-        tabButtons[3].UpdateButtonState();
-    }
 
     //澶栭儴璋冪敤鐐瑰嚮鍔熻兘
     public void ClickFunc(int functionOrder)
@@ -99,37 +91,13 @@
         tabButtons[functionOrder].SelectBtn();
     }
 
-    public void DisplayTopBar(int index)
+    public void DisplayTopBar()
     {
-        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;
-        }
+        topBar.SetActive(functionOrder == 0 || functionOrder == 2);
     }
 
     protected override void SelectBottomTab(int index)
     {
-        bool isOtherBattleInProgress = BattleManager.Instance.IsOtherBattleInProgress();
-        if (isOtherBattleInProgress)
-        {
-            // 濡傛灉姝e湪闈炰富绾挎垬鏂椾腑锛屾病婊¤冻瑙i攣鏉′欢鍒欎笉鍏佽鍒囨崲
-        }
-        DisplayTopBar(index);
-
         if (index == 3)
         {
             //鎸戞垬鐗规畩鏄剧ず閫昏緫
@@ -137,8 +105,8 @@
             return;
         }
 
-
-
+        TabChangeEvent?.Invoke();
+        
         // 濡傛灉鐐瑰嚮褰撳墠宸查�変腑鐨勬爣绛撅紝涓嶅仛澶勭悊
         if (functionOrder == index && currentSubUI != null)
         {
@@ -149,13 +117,14 @@
         // 鏇存柊褰撳墠閫変腑鐨勬爣绛剧储寮�
         functionOrder = index;
 
+        DisplayTopBar();
+
         // 鍏抽棴褰撳墠鎵撳紑鐨勫瓙鐣岄潰
         CloseCurrentSubUI();
 
         // 鏍规嵁閫変腑鐨勬爣绛炬墦寮�瀵瑰簲鐨勭晫闈�
         OpenSubUIByTabIndex();
 
-        TabChangeEvent?.Invoke();
     }
 
     //鎴樻枟鎸夐挳鍔ㄧ敾
@@ -236,7 +205,15 @@
     /// </summary>
     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);
+            return;
+        }
 
 
         if (index == 0)
@@ -253,6 +230,8 @@
             UIManager.Instance.OpenWindow<GuildJoinWin>();
             return;
         }
+
+        
         SelectBottomTab(index);
     }
 
diff --git a/Main/System/Place.meta b/Main/System/Place.meta
deleted file mode 100644
index 29907a9..0000000
--- a/Main/System/Place.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 2a75dbf92ff839445b4bf6be823add40
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 
diff --git a/Main/System/Place/PlaceWin.cs b/Main/System/Place/PlaceWin.cs
deleted file mode 100644
index 9e0caff..0000000
--- a/Main/System/Place/PlaceWin.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.UI;
-
-/// <summary>
-/// 鍦烘櫙鐣岄潰
-/// </summary>
-public class PlaceWin : UIBase
-{
-    protected Button btnExplore;
-
-    // protected 
-
-    /// <summary>
-    /// 鍒濆鍖栫粍浠�
-    /// </summary>
-    protected override void InitComponent()
-    {
-        base.InitComponent();
-        
-        // 鍦ㄨ繖閲屽垵濮嬪寲缁勪欢
-        btnExplore = transform.Find("BtnExplore").GetComponent<Button>();
-        btnExplore.onClick.AddListener(OnExploreClick);
-    }
-    
-    
-    /// <summary>
-    /// 绐楀彛鎵撳紑鏃惰皟鐢�
-    /// </summary>
-    protected override void OnOpen()
-    {
-        base.OnOpen();
-        
-        // 绐楀彛鎵撳紑鏃剁殑閫昏緫
-        
-    }
-    
-    /// <summary>
-    /// 绐楀彛鍏抽棴鏃惰皟鐢�
-    /// </summary>
-    protected override void OnClose()
-    {
-        base.OnClose();
-        
-        // 绐楀彛鍏抽棴鏃剁殑閫昏緫
-        
-    }
-    
-    /// <summary>
-    /// 鍒锋柊鐣岄潰
-    /// </summary>
-    public override void Refresh()
-    {
-        // 鍒锋柊鐣岄潰鐨勯�昏緫
-    }
-
-    private void OnExploreClick()
-    {
-        // UIManager.Instance.OpenUI<ExploreWin>();
-    }
-}
diff --git a/Main/System/Place/PlaceWin.cs.meta b/Main/System/Place/PlaceWin.cs.meta
deleted file mode 100644
index ad66f43..0000000
--- a/Main/System/Place/PlaceWin.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 846b941e24d55594fac435ba7031cfa9
-MonoImporter:
-  externalObjects: {}
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

--
Gitblit v1.8.0