From 81eef20ef97e466ce9552dcce6581d7e9917a2d7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 15 四月 2026 15:51:42 +0800
Subject: [PATCH] 0312 优化广告断线重连

---
 Main/System/BoneField/AdsManager.cs |   37 +++++++++++++++++++++++++++++++++++--
 Main/SDK/SDKUtils.cs                |    1 -
 2 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/Main/SDK/SDKUtils.cs b/Main/SDK/SDKUtils.cs
index f28b9a0..0027f75 100644
--- a/Main/SDK/SDKUtils.cs
+++ b/Main/SDK/SDKUtils.cs
@@ -649,7 +649,6 @@
                 if (AdsManager.Instance.waitAdID > 0)
                 {
                     AdsManager.Instance.GetAdsAward(AdsManager.Instance.waitAdID);
-                    AdsManager.Instance.waitAdID = 0;
                 }
                 break;
             case CodeA2U.AdLoadFail:
diff --git a/Main/System/BoneField/AdsManager.cs b/Main/System/BoneField/AdsManager.cs
index c24235c..45afd4b 100644
--- a/Main/System/BoneField/AdsManager.cs
+++ b/Main/System/BoneField/AdsManager.cs
@@ -9,13 +9,14 @@
     public Dictionary<int, Redpoint> redPointDict = new Dictionary<int, Redpoint>();
 
     public int waitAdID = 0;  //鍥炶皟鍚庡彂鏀惧鍔辩敤
+    public int waitRemainAdsCount = 0;  //鏂嚎骞朵笉鐭ユ槸鍚﹂鍙栨垚鍔� 鐢ㄦ鏁板仛浜屾楠岃瘉
     int loadErrorCD = 10;   //绛夊緟10绉掑悗鎵嶈兘鍐嶈姹�
     public float lastLoadErrorTime = 0;
 
     public override void Init()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEvent;
-        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += UpdateRedpoint;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += PlayerLoginOkEvent;
         DungeonManager.Instance.UpdateFBInfoListEvent += OnUpdateFBInfoChangeEvent;
         FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
 
@@ -34,7 +35,7 @@
     public override void Release()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEvent;
-        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= UpdateRedpoint;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= PlayerLoginOkEvent;
         DungeonManager.Instance.UpdateFBInfoListEvent -= OnUpdateFBInfoChangeEvent;
         FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
     }
@@ -52,7 +53,13 @@
     public void OnBeforePlayerDataInitializeEvent()
     {
         waitAdID = 0;
+        waitRemainAdsCount = 0;
         adsInfoDict.Clear();
+    }
+
+    public void PlayerLoginOkEvent()
+    {
+        UpdateRedpoint();
     }
 
     private void OnUpdateFBInfoChangeEvent(int mapID)
@@ -73,6 +80,23 @@
         GameNetSystem.Instance.SendInfo(pack);
     }
 
+    //鏌ョ湅骞垮憡绛夊緟澶箙鍙兘瀵艰嚧濂栧姳琚竻绌猴紝闇�瑕佹仮澶�
+    public void RestoreAdsAward()
+    {
+        if (waitAdID == 0) return;
+        int adsCnt = GetADCntByADID(waitAdID);
+        var aDAwardConfig = ADAwardConfig.Get(waitAdID);
+        if (waitRemainAdsCount != 0 && waitRemainAdsCount == aDAwardConfig.ADCntMax - adsCnt)
+        {
+            //鎭㈠濂栧姳棰嗗彇
+            GetAdsAward(waitAdID);
+        }
+
+        waitAdID = 0;
+        waitRemainAdsCount = 0;
+    }
+
+
     //鍖哄垎涓嶅悓娓犻亾鏄惁鏈夊箍鍛奡DK
     public void PlayAds(int ADID)
     {
@@ -89,7 +113,14 @@
                     SysNotifyMgr.Instance.ShowTip("AdLoadFail");
                     return;
                 }
+
+                //绛夊緟骞垮憡鐨処D鍜屽墿浣欐鏁�
                 waitAdID = ADID;
+                int adsCnt = GetADCntByADID(waitAdID);
+                var aDAwardConfig = ADAwardConfig.Get(waitAdID);
+                waitRemainAdsCount = aDAwardConfig.ADCntMax - adsCnt;
+
+
                 SDKUtils.Instance.PlayAds("b69a2b68bb3d22");
                 return;
             }
@@ -190,6 +221,8 @@
             UpdateRedpoint();
 
         }
+
+        RestoreAdsAward();
     }
 
     void UpdateRedpoint()

--
Gitblit v1.8.0