From ceabc7dde8514ed6bcfadfb5fe9fb37c45cc370e Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期四, 22 一月 2026 20:43:06 +0800
Subject: [PATCH] 136 白骨盈野-客户端  重构红点逻辑

---
 Main/System/BoneField/AdsManager.cs |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/Main/System/BoneField/AdsManager.cs b/Main/System/BoneField/AdsManager.cs
index 262527e..cdeecb9 100644
--- a/Main/System/BoneField/AdsManager.cs
+++ b/Main/System/BoneField/AdsManager.cs
@@ -10,6 +10,8 @@
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEvent;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += UpdateRedpoint;
+        DungeonManager.Instance.UpdateFBInfoListEvent += OnUpdateFBInfoChangeEvent;
+        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
 
         var keys = ADAwardConfig.GetKeys();
         for (int i = 0; i < keys.Count; i++)
@@ -27,11 +29,33 @@
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEvent;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= UpdateRedpoint;
+        DungeonManager.Instance.UpdateFBInfoListEvent += OnUpdateFBInfoChangeEvent;
+        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+    }
+
+    private void OnFuncStateChangeEvent(int funcId)
+    {
+        switch (funcId)
+        {
+            case (int)FuncOpenEnum.BoneBattle:
+                UpdateBoneAdRedPoint();
+                break;
+        }
     }
 
     public void OnBeforePlayerDataInitializeEvent()
     {
         adsInfoDict.Clear();
+    }
+
+    private void OnUpdateFBInfoChangeEvent(int mapID)
+    {
+        switch (mapID)
+        {
+            case 30010:
+                UpdateBoneAdRedPoint();
+                break;
+        }
     }
 
     void SendGetReward(int ADID)
@@ -114,7 +138,7 @@
         foreach (var key in redPointDict.Keys)
         {
             redPointDict[key].state = RedPointState.None;
-            
+
             var config = ADAwardConfig.Get(key);
             if (!FuncOpen.Instance.IsFuncOpen(config.FuncID))
             {
@@ -122,9 +146,33 @@
             }
             if (GetADCntByADID(key) < config.ADCntMax)
             {
-                redPointDict[key].state = RedPointState.Simple;
+                switch (key)
+                {
+                    //鐧介
+                    case 1:
+                        UpdateBoneAdRedPoint();
+                        break;
+                    default:
+                        redPointDict[key].state = RedPointState.Simple;
+                        break;
+                }
             }
         }
     }
+
+
+    private void UpdateBoneAdRedPoint()
+    {
+        int key = 1;
+        if (!ADAwardConfig.HasKey(key))
+            return;
+        var config = ADAwardConfig.Get(key);
+        if (!FuncOpen.Instance.IsFuncOpen(config.FuncID))
+            return;
+        if (redPointDict.IsNullOrEmpty() || !redPointDict.ContainsKey(key))
+            return;
+        bool isNoChallenge = BoneFieldManager.Instance.IsNoChallenge();
+        redPointDict[key].state = isNoChallenge ? RedPointState.None : RedPointState.Simple;
+    }
 }
 

--
Gitblit v1.8.0