From 7bc59ef2b3d8cefb63d74a89f2b2c949e691dac1 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期日, 09 十一月 2025 16:04:22 +0800
Subject: [PATCH] 212 【付费内容】功能基金

---
 Main/Utility/EnumHelper.cs                              |    1 
 Main/Component/UI/Core/GradientText.cs                  |  260 ++++++++++++++++
 Main/System/BattlePass/BattlePassCommonCell.cs          |   97 ++++++
 Main/System/BattlePass/BattlePassCommonWin.cs           |  173 ++++++++++
 Main/System/DayMission/WeekBattlePassCell.cs            |    4 
 Main/System/BattlePass/BattlePassBaseCell.cs            |   30 +
 Main/System/BattlePass/BattlePassCommonCell.cs.meta     |    2 
 Main/System/DayMission/WeekBattlePassWin.cs             |   12 
 Main/System/Redpoint/MainRedDot.cs                      |    4 
 Main/System/BattlePass/BattlePassManager.Week.cs        |   10 
 Main/Component/UI/Core/GradientText.cs.meta             |    2 
 Main/Config/Configs/CTGConfig.cs                        |    6 
 Main/System/BattlePass/BattlePassBaseCell.cs.meta       |    2 
 /dev/null                                               |   48 ---
 Main/System/Recharge/RechargeManager.cs                 |    2 
 Main/System/Main/RightFuncInHome.cs                     |    9 
 Main/System/BattlePass/BattlePassManager.cs             |  125 +++++++
 Main/System/BattlePass/BattlePassCommonWin.cs.meta      |    2 
 Main/System/BattlePass/BattlePassManager.Common.cs.meta |    2 
 Main/System/BattlePass/BattlePassBaseWin.cs.meta        |    2 
 Main/System/BattlePass/BattlePassManager.Common.cs      |   79 ++++
 Main/System/BattlePass/BattlePassBaseWin.cs             |   55 +++
 22 files changed, 850 insertions(+), 77 deletions(-)

diff --git a/Main/Component/UI/Core/GradientText.cs b/Main/Component/UI/Core/GradientText.cs
new file mode 100644
index 0000000..8739e68
--- /dev/null
+++ b/Main/Component/UI/Core/GradientText.cs
@@ -0,0 +1,260 @@
+using UnityEngine;
+using UnityEngine.UI;
+using System.Collections.Generic;
+
+/// <summary>
+/// 鏀寔娓愬彉鏁堟灉鐨勬枃鏈粍浠�
+/// </summary>
+public class GradientText : Text
+{
+    [Header("娓愬彉璁剧疆")]
+    [SerializeField]
+    private GradientType m_GradientType = GradientType.Horizontal;
+    
+    [SerializeField]
+    private Color m_TopLeftColor = Color.white;
+    
+    [SerializeField]
+    private Color m_TopRightColor = Color.white;
+    
+    [SerializeField]
+    private Color m_BottomLeftColor = Color.white;
+    
+    [SerializeField]
+    private Color m_BottomRightColor = Color.white;
+    
+    [SerializeField]
+    private bool m_UseGradient = true;
+
+    public enum GradientType
+    {
+        Horizontal,     // 姘村钩娓愬彉
+        Vertical,       // 鍨傜洿娓愬彉
+        Diagonal,       // 瀵硅绾挎笎鍙�
+        Radial,         // 寰勫悜娓愬彉
+        Custom          // 鑷畾涔夊洓瑙掗鑹�
+    }
+
+    public GradientType gradientType
+    {
+        get { return m_GradientType; }
+        set
+        {
+            if (m_GradientType != value)
+            {
+                m_GradientType = value;
+                SetVerticesDirty();
+            }
+        }
+    }
+
+    public Color topLeftColor
+    {
+        get { return m_TopLeftColor; }
+        set
+        {
+            if (m_TopLeftColor != value)
+            {
+                m_TopLeftColor = value;
+                SetVerticesDirty();
+            }
+        }
+    }
+
+    public Color topRightColor
+    {
+        get { return m_TopRightColor; }
+        set
+        {
+            if (m_TopRightColor != value)
+            {
+                m_TopRightColor = value;
+                SetVerticesDirty();
+            }
+        }
+    }
+
+    public Color bottomLeftColor
+    {
+        get { return m_BottomLeftColor; }
+        set
+        {
+            if (m_BottomLeftColor != value)
+            {
+                m_BottomLeftColor = value;
+                SetVerticesDirty();
+            }
+        }
+    }
+
+    public Color bottomRightColor
+    {
+        get { return m_BottomRightColor; }
+        set
+        {
+            if (m_BottomRightColor != value)
+            {
+                m_BottomRightColor = value;
+                SetVerticesDirty();
+            }
+        }
+    }
+
+    public bool useGradient
+    {
+        get { return m_UseGradient; }
+        set
+        {
+            if (m_UseGradient != value)
+            {
+                m_UseGradient = value;
+                SetVerticesDirty();
+            }
+        }
+    }
+
+    /// <summary>
+    /// 璁剧疆姘村钩娓愬彉棰滆壊
+    /// </summary>
+    public void SetHorizontalGradient(Color leftColor, Color rightColor)
+    {
+        m_GradientType = GradientType.Horizontal;
+        m_TopLeftColor = leftColor;
+        m_BottomLeftColor = leftColor;
+        m_TopRightColor = rightColor;
+        m_BottomRightColor = rightColor;
+        SetVerticesDirty();
+    }
+
+    /// <summary>
+    /// 璁剧疆鍨傜洿娓愬彉棰滆壊
+    /// </summary>
+    public void SetVerticalGradient(Color topColor, Color bottomColor)
+    {
+        m_GradientType = GradientType.Vertical;
+        m_TopLeftColor = topColor;
+        m_TopRightColor = topColor;
+        m_BottomLeftColor = bottomColor;
+        m_BottomRightColor = bottomColor;
+        SetVerticesDirty();
+    }
+
+    /// <summary>
+    /// 璁剧疆瀵硅绾挎笎鍙橀鑹�
+    /// </summary>
+    public void SetDiagonalGradient(Color topLeftColor, Color bottomRightColor)
+    {
+        m_GradientType = GradientType.Diagonal;
+        m_TopLeftColor = topLeftColor;
+        m_BottomRightColor = bottomRightColor;
+        
+        // 璁$畻涓棿棰滆壊
+        m_TopRightColor = Color.Lerp(topLeftColor, bottomRightColor, 0.5f);
+        m_BottomLeftColor = Color.Lerp(topLeftColor, bottomRightColor, 0.5f);
+        SetVerticesDirty();
+    }
+
+    /// <summary>
+    /// 璁剧疆寰勫悜娓愬彉棰滆壊
+    /// </summary>
+    public void SetRadialGradient(Color centerColor, Color edgeColor)
+    {
+        m_GradientType = GradientType.Radial;
+        m_TopLeftColor = edgeColor;
+        m_TopRightColor = edgeColor;
+        m_BottomLeftColor = edgeColor;
+        m_BottomRightColor = edgeColor;
+        // 寰勫悜娓愬彉闇�瑕佸湪椤剁偣鐫�鑹插櫒涓鐞�
+        SetVerticesDirty();
+    }
+
+    protected override void OnPopulateMesh(VertexHelper vh)
+    {
+        base.OnPopulateMesh(vh);
+        
+        if (!m_UseGradient)
+            return;
+
+        if (!IsActive())
+            return;
+
+        // 鑾峰彇椤剁偣鏁版嵁
+        var vertexCount = vh.currentVertCount;
+        if (vertexCount == 0)
+            return;
+
+        // 璁$畻鏂囨湰鐨勮竟鐣屾
+        var vertices = new List<UIVertex>();
+        vh.GetUIVertexStream(vertices);
+        
+        var bounds = new Bounds(vertices[0].position, Vector3.zero);
+        for (int i = 1; i < vertices.Count; i++)
+        {
+            bounds.Encapsulate(vertices[i].position);
+        }
+
+        // 搴旂敤娓愬彉棰滆壊
+        for (int i = 0; i < vertices.Count; i++)
+        {
+            var vertex = vertices[i];
+            var pos = vertex.position;
+            
+            // 璁$畻鐩稿浜庤竟鐣屾鐨勫綊涓�鍖栧潗鏍�
+            var normalizedX = (pos.x - bounds.min.x) / bounds.size.x;
+            var normalizedY = (pos.y - bounds.min.y) / bounds.size.y;
+
+            Color color = CalculateGradientColor(normalizedX, normalizedY);
+            vertex.color = color;
+            
+            vertices[i] = vertex;
+        }
+
+        vh.Clear();
+        vh.AddUIVertexTriangleStream(vertices);
+    }
+
+    private Color CalculateGradientColor(float x, float y)
+    {
+        switch (m_GradientType)
+        {
+            case GradientType.Horizontal:
+                return Color.Lerp(m_TopLeftColor, m_TopRightColor, x);
+                
+            case GradientType.Vertical:
+                return Color.Lerp(m_TopLeftColor, m_BottomLeftColor, y);
+                
+            case GradientType.Diagonal:
+                return Color.Lerp(m_TopLeftColor, m_BottomRightColor, (x + y) * 0.5f);
+                
+            case GradientType.Radial:
+                var center = new Vector2(0.5f, 0.5f);
+                var distance = Vector2.Distance(new Vector2(x, y), center);
+                return Color.Lerp(m_TopLeftColor, m_BottomRightColor, distance * 2f);
+                
+            case GradientType.Custom:
+                // 鍙岀嚎鎬ф彃鍊�
+                var topColor = Color.Lerp(m_TopLeftColor, m_TopRightColor, x);
+                var bottomColor = Color.Lerp(m_BottomLeftColor, m_BottomRightColor, x);
+                return Color.Lerp(topColor, bottomColor, y);
+                
+            default:
+                return color;
+        }
+    }
+
+    protected override void Awake()
+    {
+        base.Awake();
+        
+        // 璁剧疆榛樿棰滆壊
+        if (m_TopLeftColor == Color.white && m_TopRightColor == Color.white && 
+            m_BottomLeftColor == Color.white && m_BottomRightColor == Color.white)
+        {
+            // 璁剧疆榛樿鐨勬笎鍙橀鑹�
+            m_TopLeftColor = Color.red;
+            m_TopRightColor = Color.blue;
+            m_BottomLeftColor = Color.green;
+            m_BottomRightColor = Color.yellow;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Main/Component/UI/Core/OutlineColor.cs.meta b/Main/Component/UI/Core/GradientText.cs.meta
similarity index 83%
copy from Main/Component/UI/Core/OutlineColor.cs.meta
copy to Main/Component/UI/Core/GradientText.cs.meta
index 9fd6048..15f5e65 100644
--- a/Main/Component/UI/Core/OutlineColor.cs.meta
+++ b/Main/Component/UI/Core/GradientText.cs.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 73475911b65888b44a39a57cca0bcac3
+guid: 9a20b8661160f064e9c0f1c76e41a05e
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2
diff --git a/Main/Component/UI/Core/OutlineColor.cs b/Main/Component/UI/Core/OutlineColor.cs
deleted file mode 100644
index 0df0315..0000000
--- a/Main/Component/UI/Core/OutlineColor.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-锘縰sing UnityEngine.UI;
-using UnityEngine;
-using System;
-
-public class OutlineColor : Outline
-{
-    [Header("鎵╁睍Outline澧炲姞棰滆壊閫夋嫨")]
-    [SerializeField][HideInInspector]
-    QualityTextColType m_ColorType = QualityTextColType.None;
-    public QualityTextColType colorType
-    {
-        get { return m_ColorType; }
-        set
-        {
-            if (m_ColorType != value)
-            {
-                m_ColorType = value;
-                this.effectColor = UIHelper.GetUIOutlineColor(value);
-            }
-        }
-    }
-
-    [SerializeField][HideInInspector]
-    Vector2 m_EffectDistanceEx = new Vector2(1.5f, -1.5f);
-    public Vector2 effectDistanceEx
-    {
-        get { return m_EffectDistanceEx; }
-        set
-        {
-            if (m_EffectDistanceEx != value)
-            { 
-                m_EffectDistanceEx = value;
-                effectDistance = value;
-            }
-        }
-    }
-
-
-
-
-    protected override void Awake()
-    {
-        this.effectDistance = m_EffectDistanceEx;
-        this.effectColor = UIHelper.GetUIOutlineColor(colorType);
-    }
-
-
-}
diff --git a/Main/Config/Configs/CTGConfig.cs b/Main/Config/Configs/CTGConfig.cs
index d10f8ba..44e7f96 100644
--- a/Main/Config/Configs/CTGConfig.cs
+++ b/Main/Config/Configs/CTGConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:           YYL
-//    [  Date ]:           2025骞�8鏈�5鏃�
+//    [  Date ]:           2025骞�11鏈�9鏃�
 //--------------------------------------------------------
 
 using System.Collections.Generic;
@@ -27,7 +27,7 @@
 	public int GainGold;
 	public int GainGoldPaper;
 	public int FirstGoldPaperPrize;
-	public string GainItemList;
+	public int[][] GainItemList;
 	public int[][] SelectItemInfo;
 	public string Icon;
 	public int PayType;
@@ -65,7 +65,7 @@
 
 			int.TryParse(tables[10],out FirstGoldPaperPrize); 
 
-			GainItemList = tables[11];
+			GainItemList = JsonMapper.ToObject<int[][]>(tables[11].Replace("(", "[").Replace(")", "]")); 
 
 			SelectItemInfo = JsonMapper.ToObject<int[][]>(tables[12].Replace("(", "[").Replace(")", "]")); 
 
diff --git a/Main/System/BattlePass/BattlePassBaseCell.cs b/Main/System/BattlePass/BattlePassBaseCell.cs
new file mode 100644
index 0000000..db08dbd
--- /dev/null
+++ b/Main/System/BattlePass/BattlePassBaseCell.cs
@@ -0,0 +1,30 @@
+锘縰sing System;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+
+public class BattlePassBaseCell : CellView
+{
+    [SerializeField] Image bg;
+    [SerializeField] Image word;
+    [SerializeField] RedpointBehaviour redPoint;
+    [SerializeField] Button btn;
+    
+
+
+    public void Display(int type)
+    {
+        bg.SetSprite("BattlePassBG" + type);
+        word.SetSprite("BattlePassWord" + type);
+        redPoint.redpointId = MainRedDot.RedPoint_FundKey * 100 + type;
+        btn.AddListener(() =>
+        {
+            UIManager.Instance.OpenWindow<BattlePassCommonWin>(type);
+        });
+    }
+
+
+}
+
+
diff --git a/Main/Component/UI/Core/OutlineColor.cs.meta b/Main/System/BattlePass/BattlePassBaseCell.cs.meta
similarity index 83%
rename from Main/Component/UI/Core/OutlineColor.cs.meta
rename to Main/System/BattlePass/BattlePassBaseCell.cs.meta
index 9fd6048..12c7b6d 100644
--- a/Main/Component/UI/Core/OutlineColor.cs.meta
+++ b/Main/System/BattlePass/BattlePassBaseCell.cs.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 73475911b65888b44a39a57cca0bcac3
+guid: 2e63901b40440a649acfb3f7757bbd02
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2
diff --git a/Main/System/BattlePass/BattlePassBaseWin.cs b/Main/System/BattlePass/BattlePassBaseWin.cs
new file mode 100644
index 0000000..36419e4
--- /dev/null
+++ b/Main/System/BattlePass/BattlePassBaseWin.cs
@@ -0,0 +1,55 @@
+锘縰sing System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+//鍩洪噾鍏ュ彛
+public class BattlePassBaseWin : UIBase
+{
+    [SerializeField] ScrollerController scroller;
+
+
+
+
+    protected override void OnPreOpen()
+    {
+        scroller.OnRefreshCell += OnRefreshCell;
+        CreateScroller();
+
+
+    }
+
+    protected override void OnPreClose()
+    {
+        scroller.OnRefreshCell -= OnRefreshCell;
+
+    }
+
+
+    void CreateScroller()
+    {
+        scroller.Refresh();
+        foreach(var type in BattlePassManager.Instance.battlePassTypeSortList)
+        {
+            if (!FuncOpen.Instance.IsFuncOpen(BattlePassManager.Instance.typeToFuncIDDict[type]))
+            {
+                continue;
+            }
+            scroller.AddCell(ScrollerDataType.Header, type);
+        }
+        scroller.Restart();
+
+    }
+
+
+    void OnRefreshCell(ScrollerDataType type, CellView cell)
+    {
+        var _cell = cell as BattlePassBaseCell;
+        _cell.Display(cell.index);
+    }
+}
+
+
+
+
+
diff --git a/Main/Component/UI/Core/OutlineColor.cs.meta b/Main/System/BattlePass/BattlePassBaseWin.cs.meta
similarity index 83%
copy from Main/Component/UI/Core/OutlineColor.cs.meta
copy to Main/System/BattlePass/BattlePassBaseWin.cs.meta
index 9fd6048..fcf60c3 100644
--- a/Main/Component/UI/Core/OutlineColor.cs.meta
+++ b/Main/System/BattlePass/BattlePassBaseWin.cs.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 73475911b65888b44a39a57cca0bcac3
+guid: 99d1228c0c974fc488759c06716cb89c
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2
diff --git a/Main/System/BattlePass/BattlePassCommonCell.cs b/Main/System/BattlePass/BattlePassCommonCell.cs
new file mode 100644
index 0000000..97acee5
--- /dev/null
+++ b/Main/System/BattlePass/BattlePassCommonCell.cs
@@ -0,0 +1,97 @@
+锘縰sing System;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+
+public class BattlePassCommonCell : CellView
+{
+    [SerializeField] ItemCell baseAward;
+    [SerializeField] Transform baseGotRect;
+    [SerializeField] Transform baseCanGetAwardRect;
+    [SerializeField] Transform upProcssBGRect;
+    [SerializeField] Transform upProcessRect;
+    [SerializeField] Transform downProcssBGRect;
+    [SerializeField] Transform downProcessRect;
+    [SerializeField] Text valueText;
+    [SerializeField] ItemCell[] betterAwards;
+    [SerializeField] Transform[] betterGotRects;
+    [SerializeField] Transform[] betterCanGetAwardRects;
+    [SerializeField] Transform[] betterLockRects;
+
+    [SerializeField] Transform mask;
+
+    int bpID;
+    public void Display(int id, BattlePassData battlePassData)
+    {
+        bpID = id;
+        var config = ZhanlingConfig.Get(id);
+        int freeItemID = config.FreeRewardItemList[0][0];
+        baseAward.Init(new ItemCellModel(freeItemID, false, config.FreeRewardItemList[0][1]));
+        var totalValue = BattlePassManager.Instance.GetTotalValue(config.ZhanlingType);
+        var baseAwardState = BattlePassManager.Instance.GetBPCellAwardState(battlePassData, totalValue, config.NeedValue, 0);
+        baseAward.button.AddListener(() =>
+        {
+            GetAward(battlePassData, baseAwardState, freeItemID);
+        });
+
+
+        baseGotRect.SetActive(baseAwardState == 2);
+        baseCanGetAwardRect.SetActive(baseAwardState == 1);
+        mask.SetActive(baseAwardState == 0);
+
+        var ids = ZhanlingConfig.GetTypeToIDDict(config.ZhanlingType).Values.ToList();
+        ids.Sort();
+        upProcssBGRect.SetActive(ids[0] != id);
+        upProcessRect.SetActive(baseAwardState != 0);
+
+        downProcssBGRect.SetActive(ids[ids.Count - 1] != id);
+        var nextConfig = ZhanlingConfig.Get(id + 1);
+        if (nextConfig != null)
+        {
+            downProcessRect.SetActive(totalValue >= nextConfig.NeedValue);
+        }
+        else
+        {
+            downProcessRect.SetActive(false);
+        }
+
+        if (config.ZhanlingType == (int)BattlePassType.MainLine)
+        {
+
+            valueText.text = config.NeedValue/100 + "-" + config.NeedValue%100;
+        }
+        else
+        {
+            valueText.text = config.NeedValue.ToString();
+        }
+
+        var betterAwardState = BattlePassManager.Instance.GetBPCellAwardState(battlePassData, totalValue, config.NeedValue, 1);
+        for (int i = 0; i < betterAwards.Length; i++)
+        {
+            int itemID = config.ZLRewardItemList[i][0];
+            betterAwards[i].Init(new ItemCellModel(itemID, false, config.ZLRewardItemList[i][1]));
+            betterAwards[i].button.AddListener(() =>
+            {
+                GetAward(battlePassData, betterAwardState, itemID);
+            });
+            betterGotRects[i].SetActive(betterAwardState == 2);
+            betterCanGetAwardRects[i].SetActive(betterAwardState == 1);
+            betterLockRects[i].SetActive(battlePassData.isActivite == 0);
+        }
+    }
+
+    void GetAward(BattlePassData battlePassData, int awardState, int itemID)
+    {
+        if (awardState != 1)
+        {
+            ItemTipUtility.Show(itemID);
+            return;
+        }
+        var config = ZhanlingConfig.Get(bpID);
+        var totalValue = BattlePassManager.Instance.GetTotalValue(config.ZhanlingType);
+        BattlePassManager.Instance.GetAllAward(battlePassData, config.ZhanlingType, totalValue);
+    }
+}
+
+
diff --git a/Main/Component/UI/Core/OutlineColor.cs.meta b/Main/System/BattlePass/BattlePassCommonCell.cs.meta
similarity index 83%
copy from Main/Component/UI/Core/OutlineColor.cs.meta
copy to Main/System/BattlePass/BattlePassCommonCell.cs.meta
index 9fd6048..c20dfe5 100644
--- a/Main/Component/UI/Core/OutlineColor.cs.meta
+++ b/Main/System/BattlePass/BattlePassCommonCell.cs.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 73475911b65888b44a39a57cca0bcac3
+guid: e29202cc898b4164e962fff7c1737ee7
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2
diff --git a/Main/System/BattlePass/BattlePassCommonWin.cs b/Main/System/BattlePass/BattlePassCommonWin.cs
new file mode 100644
index 0000000..6d2c03d
--- /dev/null
+++ b/Main/System/BattlePass/BattlePassCommonWin.cs
@@ -0,0 +1,173 @@
+锘縰sing System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+//閫氱敤鎴樹护
+public class BattlePassCommonWin : UIBase
+{
+    [SerializeField] Text titleText;
+    [SerializeField] Text welfarePerText; //绂忓埄鐧惧垎姣� 
+    [SerializeField] Text itemNameText;   //棰濆濂栧姳
+    [SerializeField] Text totalActivityText;
+    [SerializeField] Text tabNameText;
+    [SerializeField] Transform lockRect;
+    [SerializeField] ScrollerController scroller;
+    [SerializeField] Transform rechargeRect;
+    [SerializeField] ItemCell itemCell;
+    [SerializeField] Button buyBtn;
+    [SerializeField] Text buyText;
+
+    BattlePassData battlePassData;
+
+    int battlePasstype;
+
+    protected override void InitComponent()
+    {
+        buyBtn.AddListener(() =>
+        {
+            RechargeManager.Instance.CTG(BattlePassManager.Instance.GetCTGIDByType(battlePasstype));
+        });
+    }
+    protected override void OnPreOpen()
+    {
+        battlePasstype = functionOrder;
+        battlePassData = BattlePassManager.Instance.GetBattlePassData(battlePasstype);
+        if (battlePassData == null) return;
+        scroller.OnRefreshCell += OnRefreshCell;
+        BattlePassManager.Instance.BattlePassDataUpdateEvent += BattlePassDataUpdateEvent;
+        PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
+        BlessLVManager.Instance.OnBlessLVUpdateEvent += OnBlessLVUpdateEvent;
+        CreateScroller();
+        ShowStaticUI();
+        Display();
+
+
+    }
+
+    protected override void OnPreClose()
+    {
+        scroller.OnRefreshCell -= OnRefreshCell;
+        BattlePassManager.Instance.BattlePassDataUpdateEvent -= BattlePassDataUpdateEvent;
+        PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
+        BlessLVManager.Instance.OnBlessLVUpdateEvent -= OnBlessLVUpdateEvent;
+
+    }
+
+    void OnPlayerDataRefresh(PlayerDataType type)
+    {
+        if (type == PlayerDataType.LV || type == PlayerDataType.ExAttr1)
+        {
+            Display();
+        }
+    }
+
+    void OnBlessLVUpdateEvent()
+    {
+        Display();
+    }
+
+
+    void BattlePassDataUpdateEvent(int type)
+    {
+        if (type == battlePasstype)
+        {
+            Display();
+        }
+    }
+
+    void ShowStaticUI()
+    {
+        var ctgID = BattlePassManager.Instance.GetCTGIDByType(battlePasstype);
+        var config = CTGConfig.Get(ctgID);
+        welfarePerText.text = config.Percentage + "%";
+        if (!config.GainItemList.IsNullOrEmpty() && config.GainItemList.Length >= 2)
+        {
+            //绾﹀畾绗簩涓墿鍝�
+            itemNameText.text = Language.Get("BattlePass8", config.GainItemList[1][1], ItemConfig.Get(config.GainItemList[1][0]).ItemName);
+        }
+
+        tabNameText.text = Language.Get("BattlePassTab" + battlePasstype);
+        titleText.text = Language.Get("BattlePassTitle" + battlePasstype);
+    }
+
+
+    void Display()
+    {
+        ShowTotalValueStr();
+
+        lockRect.SetActive(battlePassData.isActivite == 0);
+        scroller.m_Scorller.RefreshActiveCellViews();
+
+        if (battlePassData.isActivite == 0)
+        {
+            rechargeRect.SetActive(true);
+            var ctgID = BattlePassManager.Instance.GetCTGIDByType(battlePasstype);
+            RechargeManager.Instance.TryGetOrderInfo(ctgID, out var orderInfoConfig);
+            buyText.text = Language.Get("PayMoneyNum", orderInfoConfig.PayRMBNumOnSale);
+
+            var config = CTGConfig.Get(ctgID);
+            //绾﹀畾绗竴涓灏嗙墿鍝�
+            int itemID = config.GainItemList[0][0];
+            itemCell.Init(new ItemCellModel(itemID, false, config.GainItemList[0][1]));
+            itemCell.button.AddListener(() =>
+            {
+                ItemTipUtility.Show(itemID);
+            });
+        }
+        else
+        {
+            rechargeRect.SetActive(false);
+        }
+    }
+
+    void ShowTotalValueStr()
+    {
+        var totalValue = BattlePassManager.Instance.GetTotalValue(battlePasstype);
+        switch ((BattlePassType)battlePasstype)
+        {
+            case BattlePassType.LV:
+            case BattlePassType.BlessLV:
+            case BattlePassType.GuBao:
+            case BattlePassType.Arena:
+                {
+                    totalActivityText.text = Language.Get("BattlePassValue" + battlePasstype, totalValue);
+                    break;
+                }
+            case BattlePassType.MainLine:
+                {
+                    totalActivityText.text = Language.Get("BattlePassValue3", totalValue / 100, totalValue % 100);
+                    break;
+                }
+        }
+
+    }
+
+
+    void CreateScroller()
+    {
+        scroller.Refresh();
+        var values = ZhanlingConfig.GetTypeToIDDict(battlePasstype).Values.ToList();
+        values.Sort();
+        for (int i = 0; i < values.Count; i++)
+        {
+            scroller.AddCell(ScrollerDataType.Header, values[i]);
+        }
+        scroller.Restart();
+
+        var totalValue = BattlePassManager.Instance.GetTotalValue(battlePasstype);
+        scroller.JumpIndex(BattlePassManager.Instance.JumpIndex(battlePassData, battlePasstype, totalValue));
+    }
+
+
+    void OnRefreshCell(ScrollerDataType type, CellView cell)
+    {
+        var _cell = cell as BattlePassCommonCell;
+        _cell.Display(cell.index, battlePassData);
+    }
+}
+
+
+
+
+
diff --git a/Main/Component/UI/Core/OutlineColor.cs.meta b/Main/System/BattlePass/BattlePassCommonWin.cs.meta
similarity index 83%
copy from Main/Component/UI/Core/OutlineColor.cs.meta
copy to Main/System/BattlePass/BattlePassCommonWin.cs.meta
index 9fd6048..0e1eafa 100644
--- a/Main/Component/UI/Core/OutlineColor.cs.meta
+++ b/Main/System/BattlePass/BattlePassCommonWin.cs.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 73475911b65888b44a39a57cca0bcac3
+guid: 9ccc81dd25c7a8c4e9fe71b015a3e955
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2
diff --git a/Main/System/BattlePass/BattlePassManager.Common.cs b/Main/System/BattlePass/BattlePassManager.Common.cs
new file mode 100644
index 0000000..aed51fb
--- /dev/null
+++ b/Main/System/BattlePass/BattlePassManager.Common.cs
@@ -0,0 +1,79 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+using System.Linq;
+
+//閫氱敤鍩洪噾鐣岄潰鎴樹护
+public partial class BattlePassManager : GameSystemManager<BattlePassManager>
+{
+
+    //鎴樹护绫诲瀷锛氱孩鐐�  閫氱敤鍩洪噾鐣岄潰
+    Dictionary<int, Redpoint> redpointCommonDict = new Dictionary<int, Redpoint>();
+
+    //閫氱敤鎴樹护瀵瑰簲鐨勫姛鑳絠d 
+    public Dictionary<int, int> typeToFuncIDDict = new Dictionary<int, int>()
+    {
+        {1, 40},
+        {2, 40},
+        {3, 40},
+        {4, 28},
+        {5, 27},
+    };
+
+    public int[] battlePassTypeSortList;
+
+
+    //1-涓诲叕绛夌骇锛�2-绁濈绛夌骇锛�3-涓荤嚎鍏冲崱锛�4-鍙ゅ疂鏁伴噺锛�5-婕旀鍦烘鏁帮紱
+    void UpdateCommonBPRedpoint(int _type)
+    {
+        if (!redpointCommonDict.ContainsKey(_type))
+        {
+            return;
+        }
+        if (!FuncOpen.Instance.IsFuncOpen(typeToFuncIDDict[_type]))
+        {
+            return;
+        }
+        redpointCommonDict[_type].state = RedPointState.None;
+        battlePassDataDict.TryGetValue(_type, out BattlePassData battlePassData);
+        if (battlePassData == null) return;
+        int totalValue = 0;
+        switch ((BattlePassType)_type)
+        {
+            case BattlePassType.LV:
+                {
+                    totalValue = PlayerDatas.Instance.baseData.LV;
+                    break;
+                }
+            case BattlePassType.BlessLV:
+                {
+                    totalValue = BlessLVManager.Instance.m_TreeLV;
+                    break;
+                }
+            case BattlePassType.MainLine:
+                {
+                    totalValue = PlayerDatas.Instance.baseData.ExAttr1 / 100;
+                    break;
+                }
+            case BattlePassType.GuBao:
+                {
+                    totalValue = (int)battlePassData.value1;
+                    break;
+                }
+            case BattlePassType.Arena:
+                {
+                    totalValue = (int)battlePassData.value1;
+                    break;
+                }
+        }
+
+        if (HasAnyAward(_type, totalValue))
+        {
+            redpointCommonDict[_type].state = RedPointState.Simple;
+        }
+    }
+
+    
+}
+
diff --git a/Main/Component/UI/Core/OutlineColor.cs.meta b/Main/System/BattlePass/BattlePassManager.Common.cs.meta
similarity index 83%
copy from Main/Component/UI/Core/OutlineColor.cs.meta
copy to Main/System/BattlePass/BattlePassManager.Common.cs.meta
index 9fd6048..a99eeb5 100644
--- a/Main/Component/UI/Core/OutlineColor.cs.meta
+++ b/Main/System/BattlePass/BattlePassManager.Common.cs.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 73475911b65888b44a39a57cca0bcac3
+guid: b1c1b8cb5fd4f9d42b87cdadae0dcce5
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2
diff --git a/Main/System/BattlePass/BattlePassManager.Week.cs b/Main/System/BattlePass/BattlePassManager.Week.cs
index d8abbc0..8fce347 100644
--- a/Main/System/BattlePass/BattlePassManager.Week.cs
+++ b/Main/System/BattlePass/BattlePassManager.Week.cs
@@ -7,18 +7,22 @@
 //鍛ㄦ垬浠�
 public partial class BattlePassManager : GameSystemManager<BattlePassManager>
 {
-    public const int WeekBattlePassType = 6;
 
     Redpoint redpoint = new Redpoint(MainRedDot.RedPoint_DailyKey, MainRedDot.RedPoint_WeekBPFuncKey);
     void UpdateWeekRedPoint()
     {
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.DayMission))
+        {
+            return;
+        }
+
         redpoint.state = RedPointState.None;
         //璐拱锛屾椿璺�
-        battlePassDataDict.TryGetValue(WeekBattlePassType, out BattlePassData battlePassData);
+        battlePassDataDict.TryGetValue((int)BattlePassType.Week, out BattlePassData battlePassData);
         if (battlePassData == null) return;
 
 
-        if (HasAnyAward(WeekBattlePassType, (int)battlePassData.value1))
+        if (HasAnyAward((int)BattlePassType.Week, (int)battlePassData.value1))
         {
             redpoint.state = RedPointState.Simple;
         }
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
diff --git a/Main/System/DayMission/WeekBattlePassCell.cs b/Main/System/DayMission/WeekBattlePassCell.cs
index bbd2629..dd557d9 100644
--- a/Main/System/DayMission/WeekBattlePassCell.cs
+++ b/Main/System/DayMission/WeekBattlePassCell.cs
@@ -39,7 +39,7 @@
         baseCanGetAwardRect.SetActive(baseAwardState == 1);
         mask.SetActive(baseAwardState == 0);
 
-        var ids = ZhanlingConfig.GetTypeToIDDict(BattlePassManager.WeekBattlePassType).Values.ToList();
+        var ids = ZhanlingConfig.GetTypeToIDDict((int)BattlePassType.Week).Values.ToList();
         ids.Sort();
         upProcssBGRect.SetActive(ids[0] != id);
         upProcessRect.SetActive(baseAwardState != 0);
@@ -81,7 +81,7 @@
             return;
         }
 
-        BattlePassManager.Instance.GetAllAward(battlePassData, BattlePassManager.WeekBattlePassType, (int)battlePassData.value1);
+        BattlePassManager.Instance.GetAllAward(battlePassData, (int)BattlePassType.Week, (int)battlePassData.value1);
     }
 }
 
diff --git a/Main/System/DayMission/WeekBattlePassWin.cs b/Main/System/DayMission/WeekBattlePassWin.cs
index cd581f3..d654365 100644
--- a/Main/System/DayMission/WeekBattlePassWin.cs
+++ b/Main/System/DayMission/WeekBattlePassWin.cs
@@ -20,12 +20,12 @@
     {
         buyBtn.AddListener(() =>
         {
-            RechargeManager.Instance.CTG(BattlePassManager.Instance.GetCTGIDByType(BattlePassManager.WeekBattlePassType));
+            RechargeManager.Instance.CTG(BattlePassManager.Instance.GetCTGIDByType((int)BattlePassType.Week));
         });
     }
     protected override void OnPreOpen()
     {
-        battlePassData = BattlePassManager.Instance.GetBattlePassData(BattlePassManager.WeekBattlePassType);
+        battlePassData = BattlePassManager.Instance.GetBattlePassData((int)BattlePassType.Week);
         if (battlePassData == null) return;
         scroller.OnRefreshCell += OnRefreshCell;
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
@@ -60,7 +60,7 @@
 
     void BattlePassDataUpdateEvent(int type)
     {
-        if (type == BattlePassManager.WeekBattlePassType)
+        if (type == (int)BattlePassType.Week)
         {
             Display();
         }
@@ -75,7 +75,7 @@
 
         if (battlePassData.isActivite == 0)
         {
-            var ctgID = BattlePassManager.Instance.GetCTGIDByType(BattlePassManager.WeekBattlePassType);
+            var ctgID = BattlePassManager.Instance.GetCTGIDByType((int)BattlePassType.Week);
             RechargeManager.Instance.TryGetOrderInfo(ctgID, out var orderInfoConfig);
             buyText.text = Language.Get("PayMoneyNum", orderInfoConfig.PayRMBNumOnSale);
             buyBtn.SetInteractable(true);
@@ -91,7 +91,7 @@
     void CreateScroller()
     {
         scroller.Refresh();
-        var values = ZhanlingConfig.GetTypeToIDDict(BattlePassManager.WeekBattlePassType).Values.ToList();
+        var values = ZhanlingConfig.GetTypeToIDDict((int)BattlePassType.Week).Values.ToList();
         values.Sort();
         for (int i = 0; i < values.Count; i++)
         {
@@ -99,7 +99,7 @@
         }
         scroller.Restart();
 
-        scroller.JumpIndex(BattlePassManager.Instance.JumpIndex(battlePassData, BattlePassManager.WeekBattlePassType, (int)battlePassData.value1));
+        scroller.JumpIndex(BattlePassManager.Instance.JumpIndex(battlePassData, (int)BattlePassType.Week, (int)battlePassData.value1));
     }
 
 
diff --git a/Main/System/Main/RightFuncInHome.cs b/Main/System/Main/RightFuncInHome.cs
index 19f020c..ea5cd24 100644
--- a/Main/System/Main/RightFuncInHome.cs
+++ b/Main/System/Main/RightFuncInHome.cs
@@ -14,6 +14,7 @@
     [SerializeField] Button storeBtn;
     [SerializeField] Button monthCardBtn;
     [SerializeField] Button dayMissionBtn;
+    [SerializeField] Button battlePassBtn;
 
     static string listenWindowName = "";   //鐩戝惉鍏抽棴鏃跺啀鏄剧ず
 
@@ -55,12 +56,20 @@
             ListenWindow("DayMissionBaseWin");
             UIManager.Instance.OpenWindow<DayMissionBaseWin>();
         });
+
+        battlePassBtn.AddListener(() =>
+        {
+            //鐢ㄤ簬鐩戝惉鐣岄潰锛屾墦寮�鏃剁缉杩涘彸杈瑰姛鑳芥爮锛屽叧闂椂鏄剧ず
+            ListenWindow("BattlePassBaseWin");
+            UIManager.Instance.OpenWindow<BattlePassBaseWin>();
+        });
     }
 
     void ShowBtns()
     {
         storeBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Store));
         dayMissionBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.DayMission));
+        battlePassBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.BattlePass));
     }
 
 
diff --git a/Main/System/Recharge/RechargeManager.cs b/Main/System/Recharge/RechargeManager.cs
index 5bf1598..20563eb 100644
--- a/Main/System/Recharge/RechargeManager.cs
+++ b/Main/System/Recharge/RechargeManager.cs
@@ -197,7 +197,7 @@
                 {
 #endif
                     var ctg = CTGConfig.Get(configs[i].CTGID);
-                    var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(ctg.GainItemList);
+                    var _itemArray = ctg.GainItemList;
                     if (_itemArray != null && _itemArray.Length > 0)
                     {
                         var _itemList = new List<Item>();
diff --git a/Main/System/Redpoint/MainRedDot.cs b/Main/System/Redpoint/MainRedDot.cs
index 53b63cd..7cc1560 100644
--- a/Main/System/Redpoint/MainRedDot.cs
+++ b/Main/System/Redpoint/MainRedDot.cs
@@ -49,7 +49,9 @@
     public const int RedPoint_WeekBPFuncKey = 1042;  //鍛ㄥ鍔憋紙鎴樹护锛�
     public const int RedPoint_MainMissionKey = 1043;  //涓荤嚎浠诲姟濂栧姳锛堟垚灏憋級
 
-
+    //鍩洪噾锛堟垬浠わ級
+    public const int RedPoint_FundKey = 105;
+    public Redpoint redPointFund = new Redpoint(RightFuncRedpoint, RedPoint_FundKey);
     //姝﹀皢鍗�
     public const int HeroCardRedpoint = 200;
     public Redpoint HeroListRedpoint = new Redpoint(MainHerosRedpoint, HeroCardRedpoint);
diff --git a/Main/Utility/EnumHelper.cs b/Main/Utility/EnumHelper.cs
index 764f659..472ce51 100644
--- a/Main/Utility/EnumHelper.cs
+++ b/Main/Utility/EnumHelper.cs
@@ -833,6 +833,7 @@
     Chat = 19,//鑱婂ぉ
     AutoFight = 20,//鑷姩鎴樻枟
     Recharge = 22,//鍏呭��
+    BattlePass = 40, //鍩洪噾锛堟垬浠わ級
 
 }
 

--
Gitblit v1.8.0