From 1ed6aaa779f0cfc50f61ab460086f9b0d4f1075d Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期五, 13 二月 2026 14:04:14 +0800
Subject: [PATCH] 475 时机礼包-客户端 增加弹出限制

---
 Main/System/TimingGift/TimingGiftManager.cs |   90 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 75 insertions(+), 15 deletions(-)

diff --git a/Main/System/TimingGift/TimingGiftManager.cs b/Main/System/TimingGift/TimingGiftManager.cs
index 220ffcc..8f3d99a 100644
--- a/Main/System/TimingGift/TimingGiftManager.cs
+++ b/Main/System/TimingGift/TimingGiftManager.cs
@@ -37,6 +37,8 @@
 
     public int[] selectCtgIds;
     public int[][] selectGainItemList;
+    public int limitPopCnt;
+    public int limitPopCd;
     public event Action OnSelectCtgIdIndexChangeEvent;
 
     public bool isLogShow = true;
@@ -45,6 +47,10 @@
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
+
+        var config = FuncConfigConfig.Get("TimingGift");
+        limitPopCnt = int.Parse(config.Numerical1);
+        limitPopCd = int.Parse(config.Numerical2);
     }
 
     public override void Release()
@@ -165,9 +171,36 @@
         return showGiftIdList;
     }
 
+    HashSet<int> typeHashSet;
+    int GetPopCnt()
+    {
+        if (typeHashSet == null)
+            typeHashSet = new HashSet<int>();
+
+        typeHashSet.Clear();
+        if (showGiftIdList.IsNullOrEmpty())
+            return 0;
+
+        for (int i = 0; i < showGiftIdList.Count; i++)
+        {
+            int id = showGiftIdList[i];
+            if (!TimingGiftConfig.TryGetTimingGiftConfig(id, out var config))
+                continue;
+            typeHashSet.Add(config.GiftType);
+        }
+        return typeHashSet.Count;
+    }
+
+    bool IsInLimitCd()
+    {
+        if (lastTriggerTimeDict.IsNullOrEmpty())
+            return false;
+        int lastTime = lastTriggerTimeDict.Values.Max();
+        return TimeUtility.AllSeconds - lastTime <= limitPopCd;
+    }
+
     public void TryAdd(int type)
     {
-
         if (NewBieCenter.Instance.inGuiding)
         {
 #if UNITY_EDITOR
@@ -191,19 +224,6 @@
             return;
         }
 
-        if (!IsTodayUnlimited(type))
-        {
-#if UNITY_EDITOR
-            if (isLogShow)
-            {
-                int lastTriggerTime = lastTriggerTimeDict[type];
-                DateTime lastTime = TimeUtility.GetTime((uint)lastTriggerTime);
-                Debug.Log($"[TimingGift] TryPop:瑙﹀彂Return,浠婂ぉ宸插脊鍑鸿繃{type}绫诲瀷鐨勭ぜ鍖咃紝璇ョ被鍨嬩笂娆″脊鍑烘椂闂翠负{lastTime:yyyy-MM-dd HH:mm:ss}");
-            }
-#endif
-            return;
-        }
-
         if (!TimingGiftConfig.TryGetTypeToGiftIdList(type, out List<int> giftIdList))
         {
 #if UNITY_EDITOR
@@ -214,6 +234,46 @@
 #endif
             return;
         }
+
+        int popCount = GetPopCnt();
+        if (limitPopCnt <= popCount)
+        {
+#if UNITY_EDITOR
+            if (isLogShow)
+            {
+                Debug.Log($"[TimingGift] TryPop:瑙﹀彂Return,浠婃棩宸茶揪鍒伴檺鍒舵鏁�");
+            }
+#endif
+            return;
+        }
+
+        bool isInLimitCd = IsInLimitCd();
+        if (isInLimitCd)
+        {
+#if UNITY_EDITOR
+            if (isLogShow)
+            {
+                Debug.Log($"[TimingGift] TryPop:瑙﹀彂Return,绀煎寘瑙﹀彂鍐峰嵈鏃堕棿涓�");
+            }
+#endif
+            return;
+        }
+
+        if (!IsTodayUnlimited(type))
+        {
+#if UNITY_EDITOR
+            if (isLogShow)
+            {
+                int lastTriggerTime = lastTriggerTimeDict[type];
+                Debug.Log($"[TimingGift] TryPop:瑙﹀彂Return,浠婂ぉ宸插脊鍑鸿繃{type}绫诲瀷鐨勭ぜ鍖咃紝璇ョ被鍨嬩笂娆″脊鍑烘椂闂翠负{TimeUtility.GetTime((uint)lastTriggerTime):yyyy-MM-dd HH:mm:ss}");
+            }
+#endif
+            return;
+        }
+
+
+
+
 
         bool isChange = false;
         for (int i = 0; i < giftIdList.Count; i++)
@@ -480,7 +540,7 @@
 
         lastTriggerTimeDict = loadDict;
         InitCurrectTimingGiftIdList(new List<int>(loadDict.Keys));
-        
+
 #if UNITY_EDITOR
         if (isLogShow)
         {

--
Gitblit v1.8.0