From a19acb609721b89419fe55785643a0d4f1959368 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 14 十一月 2025 20:03:47 +0800
Subject: [PATCH] 0312 动态检测战力公式

---
 Main/System/ChallengeTab/ChallengeTabWin.cs |  127 ++++++------------------------------------
 1 files changed, 19 insertions(+), 108 deletions(-)

diff --git a/Main/System/ChallengeTab/ChallengeTabWin.cs b/Main/System/ChallengeTab/ChallengeTabWin.cs
index bc04981..67db7d6 100644
--- a/Main/System/ChallengeTab/ChallengeTabWin.cs
+++ b/Main/System/ChallengeTab/ChallengeTabWin.cs
@@ -3,131 +3,42 @@
 
 public class ChallengeTabWin : UIBase
 {
-    [SerializeField] ChallengeTabButton btnBoneField;
-    [SerializeField] ChallengeTabButton btnArena;
-    
+    private BaseChallengeTabHandler[] tabHandlers;
+
     protected override void InitComponent()
     {
         base.InitComponent();
+        // 鑷姩鏌ユ壘鎵�鏈夊瓙瀵硅薄涓婄殑 Handler 缁勪欢
+        tabHandlers = GetComponentsInChildren<BaseChallengeTabHandler>(true);
     }
+
     protected override void OnPreOpen()
     {
         base.OnPreOpen();
-        DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChangeEvent;
-        AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
-        TimeMgr.Instance.OnDayEvent += OnDayEvent;
-        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
-        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
+        foreach (var handler in tabHandlers)
+        {
+            handler.SubscribeEvents();
+        }
         Display();
     }
+
     protected override void OnPreClose()
     {
         base.OnPreClose();
-        DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
-        AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
-        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
-        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
-        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
+        foreach (var handler in tabHandlers)
+        {
+            handler.UnsubscribeEvents();
+        }
         UIManager.Instance.GetUI<MainWin>()?.RestoreFuncBtn();
-    }
-    private void OnDayEvent()
-    {
-        Display();
-    }
-
-    private void OnAdsInfoListUpdateEvent(int id, int mapId)
-    {
-        Display();
-    }
-
-    private void OnUpdateFBInfoChangeEvent(int arg1, bool arg2, bool arg3, bool arg4)
-    {
-        if (arg1 == BoneFieldManager.Instance.DataMapID)
-        {
-            DisplayBoneFieldButton();
-        }
-
-    }
-
-    public void OnFuncStateChangeEvent(int funcId)
-    {
-        if (funcId == BoneFieldManager.Instance.funcId)
-        {
-            DisplayBoneFieldButton();
-        }
-        else if (funcId == ArenaManager.Instance.funcId)
-        {
-            DisplayArenaButton();
-        }
-    }
-
-    private void PlayerDataRefresh(PlayerDataType type)
-    {
-        if (type == PlayerDataType.ChallengeVoucher)
-        {
-            DisplayArenaButton();
-        }
     }
 
     public void Display()
     {
-        DisplayBoneFieldButton();
-        DisplayArenaButton();
-    }
-
-    public void DisplayArenaButton()
-    {
-        int index = 1;
-        int funcId = ArenaManager.Instance.funcId;
-        int redpointId = MainRedDot.ArenaRepoint;
-        bool isLock = FuncOpen.Instance.IsFuncOpen(funcId);
-        int type = ArenaManager.Instance.ChallengeMoneyType;
-        long nowCount = UIHelper.GetMoneyCnt(type);
-        string countInfo = UIHelper.AppendColor(nowCount > 0 ? TextColType.Green : TextColType.Red, Language.Get("Challenge03", nowCount));
-        string lockInfo = !isLock ? Language.Get("Challenge02") : string.Empty;
-        btnArena.Display(index, redpointId, isLock, countInfo, lockInfo, () =>
-        {
-            UIManager.Instance.CloseWindow<ChallengeTabWin>();
-            if (!FuncOpen.Instance.IsFuncOpen(funcId, true))
-                return;
-            BattleField arenaBattle = BattleManager.Instance.GetBattleFieldByMapID(3);
-            if (arenaBattle != null)
-            {
-                ArenaBattleWin battleWin;
-                if (!UIManager.Instance.IsOpened<ArenaBattleWin>())
-                {
-                    battleWin = UIManager.Instance.OpenWindow<ArenaBattleWin>();
-                }
-                else
-                {
-                    battleWin = UIManager.Instance.GetUI<ArenaBattleWin>();
-                }
-                battleWin.SetBattleField(arenaBattle);
-            }
-            else
-            {
-                UIManager.Instance.OpenWindow<ArenaWin>();
-            }
-        });
-    }
-
-    public void DisplayBoneFieldButton()
-    {
-        int index = 2;
-        int funcId = BoneFieldManager.Instance.funcId;
-        int redpointId = MainRedDot.BoneFieldRepoint;
-        bool isLock = FuncOpen.Instance.IsFuncOpen(funcId);
-        if (!BoneFieldManager.Instance.TryGetShowSweepCount(out int showSweepMaxCount, out int showrealRemainSweepCount))
+        if (tabHandlers == null)
             return;
-        string countInfo = UIHelper.AppendColor(showrealRemainSweepCount > 0 ? TextColType.Green : TextColType.Red, Language.Get("Challenge01", showrealRemainSweepCount));
-        string lockInfo = !isLock ? Language.Get("Challenge02") : string.Empty;
-        btnBoneField.Display(index, redpointId, isLock, countInfo, lockInfo, () =>
+        foreach (var handler in tabHandlers)
         {
-            UIManager.Instance.CloseWindow<ChallengeTabWin>();
-            if (!FuncOpen.Instance.IsFuncOpen(funcId, true))
-                return;
-            UIManager.Instance.OpenWindow<BoneFieldWin>();
-        });
+            handler.Refresh();
+        }
     }
-
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0