23 【付费】首充入口未消失 修复全领取后每次上线,都会将本地记录的领取时间向后推一天,导致入口关不掉bug
2个文件已修改
53 ■■■■■ 已修改文件
Main/System/FirstCharge/FirstChargeManager.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/HomeWin.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FirstCharge/FirstChargeManager.cs
@@ -329,19 +329,20 @@
        OnUpdateFirstChargeInfo?.Invoke();
    }
    public string key { get { return StringUtility.Contact("FirstCharge_AllRewardsClaimed_Time_", PlayerDatas.Instance.baseData.PlayerID); } }
    /// <summary>
    /// 检查是否所有首充奖励都已领取,如果是,则将当前服务器时间保存到本地
    /// </summary>
    private void CheckAndSaveAllRewardsClaimedTime()
    {
        // 检查是否所有奖励都已领取
        if (IsAllFirstChargeRewardsClaimed())
        {
            // 生成一个唯一的键来存储时间
            string key = $"FirstCharge_AllRewardsClaimed_Time_{PlayerDatas.Instance.baseData.PlayerID}";
            // 将当前服务器时间保存到本地
            LocalSave.SetString(key, TimeUtility.ServerNow.Ticks.ToString());
        }
        if (LocalSave.HasKey(key))
            return;
        // 所有奖励都已领取?
        if (!IsAllFirstChargeRewardsClaimed())
            return;
        // 将当前服务器时间保存到本地
        LocalSave.SetInt(key, TimeUtility.AllSeconds);
    }
    public void UpdateRedPoint()
    {
@@ -461,31 +462,13 @@
    // 检查是否已经过了所有奖励领取完毕后的第二天0点
    public bool IsNextDayAfterAllClaimed()
    {
        // 生成一个唯一的键来获取时间
        string key = $"FirstCharge_AllRewardsClaimed_Time_{PlayerDatas.Instance.baseData.PlayerID}";
        // 检查是否存在记录的时间戳
        if (!LocalSave.HasKey(key))
            return false;
        // 获取记录的时间戳
        string timeString = LocalSave.GetString(key);
        if (string.IsNullOrEmpty(timeString))
        int time = LocalSave.GetInt(key);
        if (time <= 0)
            return false;
        // 解析时间戳
        if (!long.TryParse(timeString, out long ticks))
            return false;
        // 将时间戳转换为DateTime
        DateTime allRewardsClaimedTime = new DateTime(ticks);
        // 计算第二天0点的时间
        DateTime nextDayStart = allRewardsClaimedTime.Date.AddDays(1);
        // 判断当前服务器时间是否已经过了第二天0点
        DateTime serverNow = TimeUtility.ServerNow;
        return serverNow >= nextDayStart;
        DateTime endDateTime = TimeUtility.GetTime((uint)time).Date.AddDays(1);
        return TimeUtility.ServerNow >= endDateTime;
    }
}
Main/System/Main/HomeWin.cs
@@ -599,15 +599,17 @@
    private void DisplayFirstChargeBtn()
    {
        bool isFirstChargeFuncOpen = FirstChargeManager.Instance.IsFuncOpen();
        if (FirstChargeManager.Instance.IsAllFirstChargeRewardsClaimed() &&
        FirstChargeManager.Instance.IsNextDayAfterAllClaimed())
        bool isFuncOpen = FirstChargeManager.Instance.IsFuncOpen();
        bool isAllHave = FirstChargeManager.Instance.IsAllFirstChargeRewardsClaimed();
        bool isNextDay = FirstChargeManager.Instance.IsNextDayAfterAllClaimed();
        if (isAllHave && isNextDay)
        {
            FirstChargeBtn.SetActive(false);
        }
        else
        {
            FirstChargeBtn.SetActive(isFirstChargeFuncOpen);
            FirstChargeBtn.SetActive(isFuncOpen);
        }
    }