From 63f4f6c6ebab4ce0b86cb05e949abe749cf564bf Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期六, 11 十月 2025 18:19:41 +0800
Subject: [PATCH] 136 子 【挑战】战锤秘境 / 【挑战】战锤秘境-客户端 修改红点规则

---
 Main/System/BoneField/BoneFieldManager.cs |   46 +++++++++++++++++++++++++++++++---------------
 1 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/Main/System/BoneField/BoneFieldManager.cs b/Main/System/BoneField/BoneFieldManager.cs
index 40ef7dc..7648ffd 100644
--- a/Main/System/BoneField/BoneFieldManager.cs
+++ b/Main/System/BoneField/BoneFieldManager.cs
@@ -13,6 +13,7 @@
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
         DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChangeEvent;
         AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
+        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
         TimeMgr.Instance.OnDayEvent += OnDayEvent;
     }
 
@@ -21,16 +22,28 @@
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
         DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
         AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
+        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
         TimeMgr.Instance.OnDayEvent -= OnDayEvent;
     }
+
+    private void OnFuncStateChangeEvent(int obj)
+    {
+        if (obj != funcId)
+            return;
+        UpdateRedPoint();
+    }
+
     private void OnDayEvent()
     {
         UpdateRedPoint();
     }
+
     private void OnUpdateFBInfoChangeEvent(int mapID, bool isADAddCntChange, bool isBuyAddCntChange, bool isItemAddCntChange)
     {
         int dataMapID = DataMapID;
         if (mapID != dataMapID)
+            return;
+        if (isADAddCntChange)
             return;
         UpdateRedPoint();
     }
@@ -50,28 +63,31 @@
     public void UpdateRedPoint()
     {
         parentRedpoint.state = RedPointState.None;
-        // 鏈夋壂鑽℃鏁�:鍏嶈垂+閲戝竵
-        if (TryGetShowSweepCount(out int showSweepMaxCount, out int showrealRemainSweepCount))
+        if (!FuncOpen.Instance.IsFuncOpen(funcId))
+            return;
+        if (!DungeonManager.Instance.TryGetFBInfoByMapID(DataMapID, out var fbInfo))
+            return;
+        bool isHasNextLineID = IsHasNextLineID(fbInfo);
+        int nowPassLineID = GetNowPassLineID(fbInfo);
+        DungeonConfig.TryGetDungeonID(DataMapID, nowPassLineID, out int dungeonID);
+        if (!DungeonConfig.HasKey(dungeonID))
+            return;
+        DungeonConfig dungeonConfig = DungeonConfig.Get(dungeonID);
+        bool isLvOk = PlayerDatas.Instance.baseData.LV >= dungeonConfig.LVLimitMin;
+        long myFightPower = PlayerDatas.Instance.baseData.FightPower;
+        if (myFightPower >= dungeonConfig.FightPower)
         {
-            bool isSweepCountOk = showrealRemainSweepCount > 0;
-            if (isSweepCountOk)
+            if (isLvOk && isHasNextLineID)
             {
                 parentRedpoint.state = RedPointState.Simple;
             }
         }
-        //鍙寫鎴� 鎴樺姏灏忎簬boss
-        if (DungeonManager.Instance.TryGetFBInfoByMapID(DataMapID, out var fbInfo))
+        else
         {
-            bool isHasNextLineID = IsHasNextLineID(fbInfo);
-            int nowPassLineID = GetNowPassLineID(fbInfo);
-
-            DungeonConfig.TryGetDungeonID(DataMapID, nowPassLineID, out int dungeonID);
-            if (DungeonConfig.HasKey(dungeonID))
+            if (TryGetShowSweepCount(out int showSweepMaxCount, out int showrealRemainSweepCount))
             {
-                DungeonConfig dungeonConfig = DungeonConfig.Get(dungeonID);
-                bool isLvOk = PlayerDatas.Instance.baseData.LV >= dungeonConfig.LVLimitMin;
-                long myFightPower = PlayerDatas.Instance.baseData.FightPower;
-                if (isLvOk && isHasNextLineID && myFightPower > dungeonConfig.FightPower)
+                bool isSweepCountOk = showrealRemainSweepCount > 0;
+                if (isSweepCountOk)
                 {
                     parentRedpoint.state = RedPointState.Simple;
                 }

--
Gitblit v1.8.0