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