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