lcy
3 小时以前 1ed6aaa779f0cfc50f61ab460086f9b0d4f1075d
475 时机礼包-客户端 增加弹出限制
1个文件已修改
90 ■■■■ 已修改文件
Main/System/TimingGift/TimingGiftManager.cs 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
        {