From 725b7b2374f43582a2d78b2cae3f8303359651b8 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 10 十一月 2025 14:30:53 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/BattlePass/BattlePassManager.cs |  125 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 118 insertions(+), 7 deletions(-)

diff --git a/Main/System/BattlePass/BattlePassManager.cs b/Main/System/BattlePass/BattlePassManager.cs
index 173a2fd..e8d7b86 100644
--- a/Main/System/BattlePass/BattlePassManager.cs
+++ b/Main/System/BattlePass/BattlePassManager.cs
@@ -3,6 +3,7 @@
 using UnityEngine;
 using System;
 using System.Linq;
+using LitJson;
 
 
 public partial class BattlePassManager : GameSystemManager<BattlePassManager>
@@ -11,17 +12,25 @@
     Dictionary<int, BattlePassData> battlePassDataDict = new Dictionary<int, BattlePassData>();
     public event Action<int> BattlePassDataUpdateEvent;
 
+
     Dictionary<int, int[]> buyZhanlingTypeDict = new Dictionary<int, int[]>();
+
 
     public override void Init()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+        PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
+        BlessLVManager.Instance.OnBlessLVUpdateEvent += OnBlessLVUpdateEvent;
         ParseConfig();
     }
 
     public override void Release()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+        PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
+        BlessLVManager.Instance.OnBlessLVUpdateEvent -= OnBlessLVUpdateEvent;
     }
 
     void OnBeforePlayerDataInitialize()
@@ -33,6 +42,12 @@
     {
         var config = FuncConfigConfig.Get("Zhanling");
         buyZhanlingTypeDict = ConfigParse.ParseIntArrayDict(config.Numerical1);
+        battlePassTypeSortList = JsonMapper.ToObject<int[]>(config.Numerical5);
+
+        foreach (var type in battlePassTypeSortList)
+        {
+            redpointCommonDict[type] = new Redpoint(MainRedDot.RedPoint_FundKey, MainRedDot.RedPoint_FundKey * 100 + type);
+        }
     }
 
 
@@ -54,10 +69,10 @@
             HB120_tagMCZhanlingInfo.tagMCZhanling reward = netPack.RewardList[i];
             if (!battlePassData.battlePassCellDict.ContainsKey((int)reward.NeedValue))
             {
-                battlePassData.battlePassCellDict[(int)reward.NeedValue] = new BattlePassCell();
+                battlePassData.battlePassCellDict[(int)reward.NeedValue] = new BattlePassAwardState();
             }
 
-            BattlePassCell battlePassCell = battlePassData.battlePassCellDict[(int)reward.NeedValue];
+            BattlePassAwardState battlePassCell = battlePassData.battlePassCellDict[(int)reward.NeedValue];
             battlePassCell.freeRewardState = reward.FreeRewardState;
             battlePassCell.zlRewardState = reward.ZLRewardState;
             battlePassCell.zlRewardStateH = reward.ZLRewardStateH;
@@ -67,12 +82,51 @@
         BattlePassDataUpdateEvent?.Invoke(netPack.ZhanlingType);
     }
 
+    #region 绾㈢偣
 
-    void UpdateRedpoint(int type)
+    void OnBlessLVUpdateEvent()
+    {
+        UpdateCommonBPRedpoint(2);
+    }
+
+    void OnPlayerDataRefresh(PlayerDataType type)
     {
         switch (type)
         {
-            case WeekBattlePassType:
+            case PlayerDataType.LV:
+            case PlayerDataType.ExAttr1:
+                {
+                    UpdateCommonBPRedpoint(1);
+                    UpdateCommonBPRedpoint(3);
+                    break;
+                }
+        }
+    }
+
+    void OnPlayerLoginOk()
+    {
+        foreach (var type in battlePassTypeSortList)
+        {
+            UpdateCommonBPRedpoint(type);
+        }
+    }
+
+
+
+    void UpdateRedpoint(int type)
+    {
+        switch ((BattlePassType)type)
+        {
+            case BattlePassType.LV:
+            case BattlePassType.BlessLV:
+            case BattlePassType.MainLine:
+            case BattlePassType.GuBao:
+            case BattlePassType.Arena:
+                {
+                    UpdateCommonBPRedpoint(type);
+                    break;
+                }
+            case BattlePassType.Week:
                 {
                     UpdateWeekRedPoint();
                     break;
@@ -80,6 +134,9 @@
         }
     }
 
+    
+    
+    #endregion
     //鏄惁鏈変换浣曞鍔卞彲浠ラ鍙�
     public bool HasAnyAward(int type, int totalValue)
     {
@@ -231,7 +288,7 @@
 
     public int JumpIndex(BattlePassData battlePassData, int zhanLingType, int totalValue)
     {
-        
+
         var ids = ZhanlingConfig.GetTypeToIDDict(zhanLingType).Values.ToList();
         ids.Sort();
         int index = -1;
@@ -255,10 +312,54 @@
         }
         return index;
     }
+
+    //鏄惁鍏ㄩ儴瀹屾垚(濂栧姳鍏ㄩ鍙�)
+    public bool IsAllFinish(int type)
+    {
+        battlePassDataDict.TryGetValue(type, out BattlePassData battlePassData);
+        if (battlePassData == null)
+            return false;
+        if (battlePassData.allFinishTime != 0)
+            return true;
+        return false;
+    }
+
+    public int GetTotalValue(int _type)
+    {
+        battlePassDataDict.TryGetValue(_type, out BattlePassData battlePassData);
+        switch ((BattlePassType)_type)
+        {
+            case BattlePassType.LV:
+                {
+                    return PlayerDatas.Instance.baseData.LV;
+                }
+            case BattlePassType.BlessLV:
+                {
+                    return BlessLVManager.Instance.m_TreeLV;
+                }
+            case BattlePassType.MainLine:
+                {
+                    return PlayerDatas.Instance.baseData.ExAttr1 / 100;
+                }
+            case BattlePassType.GuBao:
+                {
+                    return (int)battlePassData.value1;
+                }
+            case BattlePassType.Arena:
+                {
+                    return (int)battlePassData.value1;
+                }
+            case BattlePassType.Week:
+                {
+                    return (int)battlePassData.value1;
+                }
+        }
+        return 0;       
+    }
 }
 
 
-public class BattlePassCell
+public class BattlePassAwardState
 {
     public byte freeRewardState;        // 鍏嶈垂鎴樹护濂栧姳鏄惁宸查鍙�
     public byte zlRewardState;        // 鏅�氭垬浠ゅ鍔辨槸鍚﹀凡棰嗗彇
@@ -273,5 +374,15 @@
     public uint allFinishTime;    // 鍏ㄩ儴濂栧姳棰嗗彇瀹屾瘯鐨勬椂闂存埑锛屾湭瀹屾瘯鏃惰鍊间负0锛屽悗绔細鍦�0鐐硅繃澶╂椂妫�鏌ュ彲鍚﹂噸缃紝鍓嶇鑷鍋氬�掕鏃惰〃鐜板嵆鍙�
     public uint value1;    // 鎴樹护瀵瑰簲鐨勮嚜瀹氫箟鍊硷紝鍙�夛紝濡傜櫥褰曟垬浠や唬琛ㄥ紑濮嬭绠楁棩鏈熸椂闂存埑
 
-    public Dictionary<int, BattlePassCell> battlePassCellDict = new Dictionary<int, BattlePassCell>();
+    public Dictionary<int, BattlePassAwardState> battlePassCellDict = new Dictionary<int, BattlePassAwardState>();
+}
+
+public enum BattlePassType
+{
+    LV = 1, //绛夌骇
+    BlessLV = 2,    //绁濈绛夌骇
+    MainLine = 3,    //涓荤嚎鍏冲崱
+    GuBao = 4,   //鍙ゅ疂
+    Arena = 5,   //婕旀鍦�
+    Week = 6,    //鍛ㄦ垬浠�
 }
\ No newline at end of file

--
Gitblit v1.8.0