From fd3dabf9fef6ee6576383439afb99dde09fa1903 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期一, 10 十一月 2025 20:36:15 +0800
Subject: [PATCH] 218 子 【付费内容】首充 / 【付费内容】首充-客户端 首充入口开启的条件改:开启首充入口任务已完成,本地有死亡记录,购买过一档以上首冲,满足其一就会开启入口

---
 Main/System/FirstCharge/FirstChargeManager.cs |   76 +++++++++++++++++++++++++++++++++----
 Main/System/Main/HomeWin.cs                   |   15 ++++---
 Main/System/Settlement/BattleFailWin.cs       |    4 ++
 Main/System/Settlement/BoneBattleFailWin.cs   |    4 ++
 Main/System/Arena/ArenaBattleFailWin.cs       |    4 ++
 5 files changed, 87 insertions(+), 16 deletions(-)

diff --git a/Main/System/Arena/ArenaBattleFailWin.cs b/Main/System/Arena/ArenaBattleFailWin.cs
index f655d2b..768d7ed 100644
--- a/Main/System/Arena/ArenaBattleFailWin.cs
+++ b/Main/System/Arena/ArenaBattleFailWin.cs
@@ -32,6 +32,10 @@
         }
         Display();
         CreateScroller();
+        if (!FirstChargeManager.Instance.GetLocalFail())
+        {
+            FirstChargeManager.Instance.SetLocalFail();
+        }
         FirstChargeManager.Instance.TryPopWin("ArenaBattleFailWin");
     }
 
diff --git a/Main/System/FirstCharge/FirstChargeManager.cs b/Main/System/FirstCharge/FirstChargeManager.cs
index de873c6..bc6f145 100644
--- a/Main/System/FirstCharge/FirstChargeManager.cs
+++ b/Main/System/FirstCharge/FirstChargeManager.cs
@@ -4,7 +4,8 @@
 
 public class FirstChargeManager : GameSystemManager<FirstChargeManager>
 {
-    public const int FuncID = 21;
+    public int taskID;
+    public int nextTaskID;
     public int mainItemId { get { return GetMainItemId(); } }
     public int heroItemID;
     public int maxGiftCount
@@ -27,7 +28,7 @@
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
         RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent;
-        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+        TaskManager.Instance.OnTaskUpdate += OnTaskUpdate;
         InitClickTabDict();
         InitRedPoint();
     }
@@ -37,21 +38,28 @@
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
         RechargeManager.Instance.rechargeCountEvent -= OnRechargeCountEvent;
-        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+        TaskManager.Instance.OnTaskUpdate -= OnTaskUpdate;
     }
 
-    private void OnFuncStateChangeEvent(int obj)
+
+    public event Action OnFirstChargeTaskUpdateEvent;
+    int beforeMainID;
+    private void OnTaskUpdate()
     {
-        if (FuncID == obj)
+        int currentTaskID = TaskManager.Instance.mainTask.TaskID;
+
+        if (beforeMainID == taskID && currentTaskID == nextTaskID)
         {
-            string key = $"FirstCharge_FirstTime_{FuncID}_{PlayerDatas.Instance.baseData.PlayerID}";
+            string key = $"FirstCharge_FirstTime_{taskID}_{PlayerDatas.Instance.baseData.PlayerID}";
             if (!LocalSave.HasKey(key))
             {
-                // 绗竴娆″紑鍚姛鑳�
+                // 绗竴娆″畬鎴愪换鍔�
                 LocalSave.SetBool(key, true);
                 PopupWindowsProcessor.Instance.Add("FirstChargeWin");
+                OnFirstChargeTaskUpdateEvent?.Invoke();
             }
         }
+        beforeMainID = currentTaskID;
     }
 
     public void InitClickTabDict()
@@ -108,11 +116,15 @@
     public void OnBeforePlayerDataInitializeEvent()
     {
         firstChargeInfoDict.Clear();
+
+        FuncConfigConfig config = FuncConfigConfig.Get("FirstCharge");
+        taskID = int.Parse(config.Numerical1);
+        nextTaskID = int.Parse(config.Numerical2);
     }
 
     public void OnPlayerLoginOk()
     {
-        if (FuncOpen.Instance.IsFuncOpen(FuncID) && TryGetUnBuyFirstId(out int firstId))
+        if (IsFuncOpen() && TryGetUnBuyFirstId(out int firstId))
         {
             PopupWindowsProcessor.Instance.Add("FirstChargeWin");
         }
@@ -130,7 +142,7 @@
             return;
         if (battleName == "TianziBillboradBattleField")
             return;
-        if (!FuncOpen.Instance.IsFuncOpen(FuncID))
+        if (!IsFuncOpen())
             return;
         if (!TryGetUnBuyFirstId(out int firstId))
             return;
@@ -140,6 +152,52 @@
         }
     }
 
+    public string loaclKey = "FirstCharge_Fail_";
+
+    public bool GetLocalFail()
+    {
+        return LocalSave.GetBool(StringUtility.Contact(loaclKey + PlayerDatas.Instance.PlayerId));
+    }
+
+    public void SetLocalFail()
+    {
+        LocalSave.SetBool(StringUtility.Contact(loaclKey + PlayerDatas.Instance.PlayerId), true);
+    }
+
+    public bool IsFuncOpen()
+    {
+        if (IsBuyOne())
+            return true;
+        if (TaskConfig.HasKey(taskID) &&
+        TaskManager.Instance.mainTask != null &&
+       TaskConfig.HasKey(TaskManager.Instance.mainTask.TaskID) &&
+       TaskManager.Instance.GetNeedFinishTaskCount(taskID) <= 0)
+            return true;
+        bool isLocalFail = GetLocalFail();
+        return isLocalFail;
+    }
+
+    //  鏈変竴妗h璐拱灏辫繑鍥瀟rue
+    public bool IsBuyOne()
+    {
+        var firstChargeList = FirstChargeConfig.GetKeys();
+        if (firstChargeList != null)
+        {
+            firstChargeList.Sort();
+            foreach (int item in firstChargeList)
+            {
+                if (TryGetFirstChargeDataByFirstId(item, out FirstChargeData data))
+                {
+                    if (data.IsUnlock() && data.IsBuy())
+                    {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
     public bool TryGetUnBuyFirstId(out int firstId)
     {
         firstId = 0;
diff --git a/Main/System/Main/HomeWin.cs b/Main/System/Main/HomeWin.cs
index 95fce4a..79ab096 100644
--- a/Main/System/Main/HomeWin.cs
+++ b/Main/System/Main/HomeWin.cs
@@ -150,6 +150,7 @@
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
         HeroUIManager.Instance.OnUnLockHeroCountEvent += OnUnLockHeroCountEvent;
         OfficialRankManager.Instance.OnOfficialCanLVUpEvent += OnOfficialCanLVUpEvent;
+        FirstChargeManager.Instance.OnFirstChargeTaskUpdateEvent += OnFirstChargeTaskUpdateEvent;
         Display();
         DisplayFirstChargeBtn();
 
@@ -173,7 +174,7 @@
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         HeroUIManager.Instance.OnUnLockHeroCountEvent -= OnUnLockHeroCountEvent;
         OfficialRankManager.Instance.OnOfficialCanLVUpEvent -= OnOfficialCanLVUpEvent;
-
+        FirstChargeManager.Instance.OnFirstChargeTaskUpdateEvent -= OnFirstChargeTaskUpdateEvent;
         //  鍏抽棴鐨勬椂鍊欐妸鎴樻枟鐣岄潰涔熺粰鍏充簡 铏界劧鏄湪澶栭潰寮�鐨�
         UIManager.Instance.CloseWindow<BattleWin>();
     }
@@ -428,7 +429,7 @@
 
     private void DisplayFirstChargeBtn()
     {
-        bool isFirstChargeFuncOpen = FuncOpen.Instance.IsFuncOpen(FirstChargeManager.FuncID);
+        bool isFirstChargeFuncOpen = FirstChargeManager.Instance.IsFuncOpen();
         if (FirstChargeManager.Instance.IsAllFirstChargeRewardsClaimed() &&
         FirstChargeManager.Instance.IsNextDayAfterAllClaimed())
         {
@@ -438,16 +439,16 @@
         {
             FirstChargeBtn.SetActive(isFirstChargeFuncOpen);
         }
+    }
 
+    private void OnFirstChargeTaskUpdateEvent()
+    {
+        DisplayFirstChargeBtn();
     }
 
     private void OnFuncStateChange(int funcId)
     {
-        if (funcId == FirstChargeManager.FuncID)
-        {
-            DisplayFirstChargeBtn();
-        }
-        else if (funcId == GeneralDefine.mainRightFuncOpenFuncID)
+        if (funcId == GeneralDefine.mainRightFuncOpenFuncID)
         {
             funcColBtn.SetActive(FuncOpen.Instance.IsFuncOpen(GeneralDefine.mainRightFuncOpenFuncID));
         }
diff --git a/Main/System/Settlement/BattleFailWin.cs b/Main/System/Settlement/BattleFailWin.cs
index e2d0a99..168e7a6 100644
--- a/Main/System/Settlement/BattleFailWin.cs
+++ b/Main/System/Settlement/BattleFailWin.cs
@@ -28,6 +28,10 @@
 
     protected override void OnPreOpen()
     {
+        if (!FirstChargeManager.Instance.GetLocalFail())
+        {
+            FirstChargeManager.Instance.SetLocalFail();
+        }
         FirstChargeManager.Instance.TryPopWin("BattleFailWin");
     }
 
diff --git a/Main/System/Settlement/BoneBattleFailWin.cs b/Main/System/Settlement/BoneBattleFailWin.cs
index 342254d..f3f8bfd 100644
--- a/Main/System/Settlement/BoneBattleFailWin.cs
+++ b/Main/System/Settlement/BoneBattleFailWin.cs
@@ -30,6 +30,10 @@
     {
         int funcId = BoneFieldManager.Instance.funcId;
         txtFuncName.text = FuncOpenLVConfig.HasKey(funcId) ? FuncOpenLVConfig.Get(funcId).Name : string.Empty;
+        if (!FirstChargeManager.Instance.GetLocalFail())
+        {
+            FirstChargeManager.Instance.SetLocalFail();
+        }
         FirstChargeManager.Instance.TryPopWin("BoneBattleFailWin");
     }
 

--
Gitblit v1.8.0