From 3a7126b4f32c8770e59e0cc48266bb3fec06ccc4 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 09 十二月 2025 14:02:02 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/HeroUI/HeroLVBreakWin.cs                 |   16 ++--
 Main/System/HeroUI/HeroLVBreakSuccessWin.cs          |   10 +-
 Main/System/FirstCharge/FirstChargeManager.cs        |   43 +++-------
 Main/System/Main/HomeWin.cs                          |   10 +-
 Main/Config/PartialConfigs/HeroQualityBreakConfig.cs |    6 -
 Main/Config/Configs/HeroQualityBreakConfig.cs        |   22 +----
 Main/Config/PartialConfigs/HeroQualityLVConfig.cs    |    6 +
 Main/System/HeroUI/HeroUIManager.Reborn.cs           |    4 
 Main/System/HeroUI/HeroTrainWin.cs                   |   66 ++++++++--------
 Main/System/HeroUI/HeroUIManager.cs                  |   27 ++----
 10 files changed, 87 insertions(+), 123 deletions(-)

diff --git a/Main/Config/Configs/HeroQualityBreakConfig.cs b/Main/Config/Configs/HeroQualityBreakConfig.cs
index 11ce604..a2c5261 100644
--- a/Main/Config/Configs/HeroQualityBreakConfig.cs
+++ b/Main/Config/Configs/HeroQualityBreakConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:           YYL
-//    [  Date ]:           2025骞�8鏈�5鏃�
+//    [  Date ]:           Tuesday, December 9, 2025
 //--------------------------------------------------------
 
 using System.Collections.Generic;
@@ -19,8 +19,8 @@
     public int QualityBreankID;
 	public int Quality;
 	public int BreakLV;
-	public int LVMax;
-	public int[] UPCostItem;
+	public int UPLVNeed;
+	public int[][] UPCostItemList;
 
     public override int LoadKey(string _key)
     {
@@ -38,21 +38,9 @@
 
 			int.TryParse(tables[2],out BreakLV); 
 
-			int.TryParse(tables[3],out LVMax); 
+			int.TryParse(tables[3],out UPLVNeed); 
 
-			if (tables[4].Contains("["))
-			{
-				UPCostItem = JsonMapper.ToObject<int[]>(tables[4]);
-			}
-			else
-			{
-				string[] UPCostItemStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
-				UPCostItem = new int[UPCostItemStringArray.Length];
-				for (int i=0;i<UPCostItemStringArray.Length;i++)
-				{
-					 int.TryParse(UPCostItemStringArray[i],out UPCostItem[i]);
-				}
-			}
+			UPCostItemList = JsonMapper.ToObject<int[][]>(tables[4].Replace("(", "[").Replace(")", "]")); 
         }
         catch (Exception exception)
         {
diff --git a/Main/Config/PartialConfigs/HeroQualityBreakConfig.cs b/Main/Config/PartialConfigs/HeroQualityBreakConfig.cs
index 7f47470..1d70b9d 100644
--- a/Main/Config/PartialConfigs/HeroQualityBreakConfig.cs
+++ b/Main/Config/PartialConfigs/HeroQualityBreakConfig.cs
@@ -4,7 +4,6 @@
 public partial class HeroQualityBreakConfig : ConfigBase<int, HeroQualityBreakConfig>
 {
     public static Dictionary<int, Dictionary<int, HeroQualityBreakConfig>> configDics = new Dictionary<int, Dictionary<int, HeroQualityBreakConfig>>();
-    public static Dictionary<int, int> maxlvDic = new Dictionary<int, int>();
     protected override void OnConfigParseCompleted()
     {
         base.OnConfigParseCompleted();
@@ -17,10 +16,7 @@
         }
 
         tempDic[BreakLV] = this;
-        if (!maxlvDic.ContainsKey(LVMax) || LVMax > maxlvDic[Quality])
-        {
-            maxlvDic[Quality] = LVMax;
-        }
+
 
     }
 
diff --git a/Main/Config/PartialConfigs/HeroQualityLVConfig.cs b/Main/Config/PartialConfigs/HeroQualityLVConfig.cs
index fa0f2ea..081442a 100644
--- a/Main/Config/PartialConfigs/HeroQualityLVConfig.cs
+++ b/Main/Config/PartialConfigs/HeroQualityLVConfig.cs
@@ -4,7 +4,7 @@
 public partial class HeroQualityLVConfig : ConfigBase<int, HeroQualityLVConfig>
 {
     public static Dictionary<int, Dictionary<int, HeroQualityLVConfig>> configDics = new Dictionary<int, Dictionary<int, HeroQualityLVConfig>>();
-
+    public static Dictionary<int, int> maxlvDic = new Dictionary<int, int>();
     protected override void OnConfigParseCompleted()
     {
 
@@ -16,6 +16,10 @@
         }
 
         tempDic.Add(HeroLV, this);
+        if (!maxlvDic.ContainsKey(Quality) || HeroLV > maxlvDic[Quality])
+        {
+            maxlvDic[Quality] = HeroLV;
+        }
     }
 
     public static HeroQualityLVConfig GetQualityLVConfig(int quality, int lv)
diff --git a/Main/System/FirstCharge/FirstChargeManager.cs b/Main/System/FirstCharge/FirstChargeManager.cs
index 34f8ba8..c647081 100644
--- a/Main/System/FirstCharge/FirstChargeManager.cs
+++ b/Main/System/FirstCharge/FirstChargeManager.cs
@@ -329,19 +329,20 @@
         OnUpdateFirstChargeInfo?.Invoke();
     }
 
+    public string key { get { return StringUtility.Contact("FirstCharge_AllRewardsClaimed_Time_", PlayerDatas.Instance.baseData.PlayerID); } }
+
     /// <summary>
     /// 妫�鏌ユ槸鍚︽墍鏈夐鍏呭鍔遍兘宸查鍙栵紝濡傛灉鏄紝鍒欏皢褰撳墠鏈嶅姟鍣ㄦ椂闂翠繚瀛樺埌鏈湴
     /// </summary>
     private void CheckAndSaveAllRewardsClaimedTime()
     {
-        // 妫�鏌ユ槸鍚︽墍鏈夊鍔遍兘宸查鍙�
-        if (IsAllFirstChargeRewardsClaimed())
-        {
-            // 鐢熸垚涓�涓敮涓�鐨勯敭鏉ュ瓨鍌ㄦ椂闂�
-            string key = $"FirstCharge_AllRewardsClaimed_Time_{PlayerDatas.Instance.baseData.PlayerID}";
-            // 灏嗗綋鍓嶆湇鍔″櫒鏃堕棿淇濆瓨鍒版湰鍦�
-            LocalSave.SetString(key, TimeUtility.ServerNow.Ticks.ToString());
-        }
+        if (LocalSave.HasKey(key))
+            return;
+        // 鎵�鏈夊鍔遍兘宸查鍙�?
+        if (!IsAllFirstChargeRewardsClaimed())
+            return;
+        // 灏嗗綋鍓嶆湇鍔″櫒鏃堕棿淇濆瓨鍒版湰鍦�
+        LocalSave.SetInt(key, TimeUtility.AllSeconds);
     }
     public void UpdateRedPoint()
     {
@@ -461,31 +462,13 @@
     // 妫�鏌ユ槸鍚﹀凡缁忚繃浜嗘墍鏈夊鍔遍鍙栧畬姣曞悗鐨勭浜屽ぉ0鐐�
     public bool IsNextDayAfterAllClaimed()
     {
-        // 鐢熸垚涓�涓敮涓�鐨勯敭鏉ヨ幏鍙栨椂闂�
-        string key = $"FirstCharge_AllRewardsClaimed_Time_{PlayerDatas.Instance.baseData.PlayerID}";
-
-        // 妫�鏌ユ槸鍚﹀瓨鍦ㄨ褰曠殑鏃堕棿鎴�
         if (!LocalSave.HasKey(key))
             return false;
-
-        // 鑾峰彇璁板綍鐨勬椂闂存埑
-        string timeString = LocalSave.GetString(key);
-        if (string.IsNullOrEmpty(timeString))
+        int time = LocalSave.GetInt(key);
+        if (time <= 0)
             return false;
-
-        // 瑙f瀽鏃堕棿鎴�
-        if (!long.TryParse(timeString, out long ticks))
-            return false;
-
-        // 灏嗘椂闂存埑杞崲涓篋ateTime
-        DateTime allRewardsClaimedTime = new DateTime(ticks);
-
-        // 璁$畻绗簩澶�0鐐圭殑鏃堕棿
-        DateTime nextDayStart = allRewardsClaimedTime.Date.AddDays(1);
-
-        // 鍒ゆ柇褰撳墠鏈嶅姟鍣ㄦ椂闂存槸鍚﹀凡缁忚繃浜嗙浜屽ぉ0鐐�
-        DateTime serverNow = TimeUtility.ServerNow;
-        return serverNow >= nextDayStart;
+        DateTime endDateTime = TimeUtility.GetTime((uint)time).Date.AddDays(1);
+        return TimeUtility.ServerNow >= endDateTime;
     }
 
 }
diff --git a/Main/System/HeroUI/HeroLVBreakSuccessWin.cs b/Main/System/HeroUI/HeroLVBreakSuccessWin.cs
index 2812657..be6d76e 100644
--- a/Main/System/HeroUI/HeroLVBreakSuccessWin.cs
+++ b/Main/System/HeroUI/HeroLVBreakSuccessWin.cs
@@ -12,8 +12,8 @@
 
     [SerializeField] Text breakLVText;
     [SerializeField] Text nextBreakLVText;
-    [SerializeField] Text lvText;
-    [SerializeField] Text nextLVText;
+    // [SerializeField] Text lvText;
+    // [SerializeField] Text nextLVText;
     [SerializeField] Text[] attrPerTextArr;
     [SerializeField] Text[] nextAttrPerTextArr;
     [SerializeField] Text potentialText;
@@ -47,10 +47,10 @@
     {
         breakLVText.text = "+" + (hero.breakLevel - 1);
         nextBreakLVText.text = "+" + hero.breakLevel;
-        var beforeBreakLVConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel - 1);
-        lvText.text = beforeBreakLVConfig.LVMax.ToString();
+        // var beforeBreakLVConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel - 1);
+        // lvText.text = beforeBreakLVConfig.LVMax.ToString();
 
-        nextLVText.text = hero.qualityBreakConfig.LVMax.ToString();
+        // nextLVText.text = hero.qualityBreakConfig.LVMax.ToString();
 
         for (int i = 0; i < attrPerTextArr.Length; i++)
         {
diff --git a/Main/System/HeroUI/HeroLVBreakWin.cs b/Main/System/HeroUI/HeroLVBreakWin.cs
index 36c8025..04fab68 100644
--- a/Main/System/HeroUI/HeroLVBreakWin.cs
+++ b/Main/System/HeroUI/HeroLVBreakWin.cs
@@ -12,8 +12,8 @@
 
     [SerializeField] Text breakLVText;
     [SerializeField] Text nextBreakLVText;
-    [SerializeField] Text lvText;
-    [SerializeField] Text nextLVText;
+    // [SerializeField] Text lvText;
+    // [SerializeField] Text nextLVText;
     [SerializeField] Text[] attrPerTextArr;
     [SerializeField] Text[] nextAttrPerTextArr;
     [SerializeField] Text potentialText;
@@ -49,10 +49,10 @@
     {
         breakLVText.text = "+" + hero.breakLevel;
         nextBreakLVText.text = "+" + (hero.breakLevel + 1);
-        lvText.text = hero.qualityBreakConfig.LVMax.ToString();
+        // lvText.text = hero.qualityBreakConfig.LVMax.ToString();
 
-        var nextBreakLVConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel + 1);
-        nextLVText.text = nextBreakLVConfig.LVMax.ToString();
+        // var nextBreakLVConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel + 1);
+        // nextLVText.text = nextBreakLVConfig.LVMax.ToString();
 
         for (int i = 0; i < attrPerTextArr.Length; i++)
         {
@@ -65,8 +65,8 @@
             hero.qualityConfig.BreakLVAddPer * (hero.breakLevel + 1));
         }
 
-        moneyIcon.SetOrgSprite(ItemConfig.Get(hero.qualityBreakConfig.UPCostItem[0]).IconKey);
-        moneyText.text = UIHelper.ShowUseItem(PackType.Item, hero.qualityBreakConfig.UPCostItem[0], hero.qualityBreakConfig.UPCostItem[1]);
+        moneyIcon.SetOrgSprite(ItemConfig.Get(hero.qualityBreakConfig.UPCostItemList[0][0]).IconKey);
+        moneyText.text = UIHelper.ShowUseItem(PackType.Item, hero.qualityBreakConfig.UPCostItemList[0][0], hero.qualityBreakConfig.UPCostItemList[0][1]);
 
         var nextQualityBreakConfig = HeroBreakConfig.GetHeroBreakConfig(hero.heroId, hero.breakLevel + 1);
         if (nextQualityBreakConfig == null)
@@ -101,7 +101,7 @@
 
     void BreakLV()
     {
-        if (ItemLogicUtility.CheckItemCount(PackType.Item, hero.qualityBreakConfig.UPCostItem[0], hero.qualityBreakConfig.UPCostItem[1], 2))
+        if (ItemLogicUtility.CheckItemCount(PackType.Item, hero.qualityBreakConfig.UPCostItemList[0][0], hero.qualityBreakConfig.UPCostItemList[0][1], 2))
         {
             var pack = new CB232_tagCSHeroBreak();
             pack.ItemIndex = (ushort)hero.itemHero.gridIndex;
diff --git a/Main/System/HeroUI/HeroTrainWin.cs b/Main/System/HeroUI/HeroTrainWin.cs
index c7b2f20..fd0dfd3 100644
--- a/Main/System/HeroUI/HeroTrainWin.cs
+++ b/Main/System/HeroUI/HeroTrainWin.cs
@@ -454,16 +454,16 @@
             lvupBtnText.text = Language.Get("L1109");
             lvupMoneyIcon.SetActive(true);
 
-            if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero))
+            // if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero))
+            // {
+            //     lvupBtnText.text = Language.Get("L1111");
+            //     var breakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel);
+            //     lvupMoneyIcon.SetOrgSprite(ItemConfig.Get(breakConfig.UPCostItemList[0][0]).IconKey);
+            //     lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, breakConfig.UPCostItemList[0][0], breakConfig.UPCostItemList[0][1]);
+            // }
+            // else
             {
-                lvupBtnText.text = Language.Get("L1111");
-                var breakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel);
-                lvupMoneyIcon.SetOrgSprite(ItemConfig.Get(breakConfig.UPCostItem[0]).IconKey);
-                lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, breakConfig.UPCostItem[0], breakConfig.UPCostItem[1]);
-            }
-            else
-            {
-                lvupBtnText.text = Language.Get("L1109");
+                // lvupBtnText.text = Language.Get("L1109");
                 var lvupConfig = HeroQualityLVConfig.GetQualityLVConfig(hero.Quality, hero.heroLevel);
                 lvupMoneyIcon.SetOrgSprite(ItemConfig.Get(lvupConfig.UPCostItem[0]).IconKey);
                 lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, lvupConfig.UPCostItem[0], lvupConfig.UPCostItem[1]);
@@ -484,16 +484,16 @@
     {
         int itemID = 0;
         long needCount = 0;
-        if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero))
-        {
-            //绐佺牬
-            if (!UIManager.Instance.IsOpened<HeroLVBreakWin>())
-            {
-                HeroUIManager.Instance.selectHeroGuid = guid;
-                UIManager.Instance.OpenWindow<HeroLVBreakWin>();
-            }
-        }
-        else
+        // if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero))
+        // {
+        //     //绐佺牬
+        //     if (!UIManager.Instance.IsOpened<HeroLVBreakWin>())
+        //     {
+        //         HeroUIManager.Instance.selectHeroGuid = guid;
+        //         UIManager.Instance.OpenWindow<HeroLVBreakWin>();
+        //     }
+        // }
+        // else
         {
             //鍗囩骇
             var lvupConfig = HeroQualityLVConfig.GetQualityLVConfig(hero.Quality, hero.heroLevel);
@@ -834,20 +834,20 @@
             redpointGift.SetActive(true);
         }
 
-        var maxBreakLV = HeroBreakConfig.GetMaxBreakLv(hero.heroId);
-        if (hero.breakLevel < maxBreakLV)
-        {
-            if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero))
-            {
-                var breakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel);
-                if (itemPack.GetCountById(breakConfig.UPCostItem[0]) >= breakConfig.UPCostItem[1])
-                {
-                    redpointLVUP.SetActive(true);
-                    return;
-                }
-                return;
-            }
-        }
+        // var maxBreakLV = HeroBreakConfig.GetMaxBreakLv(hero.heroId);
+        // if (hero.breakLevel < maxBreakLV)
+        // {
+        //     if (HeroUIManager.Instance.IsCanBreak(hero))
+        //     {
+        //         var breakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel);
+        //         if (itemPack.GetCountById(breakConfig.UPCostItemList[0][0]) >= breakConfig.UPCostItemList[0][1])
+        //         {
+        //             redpointLVUP.SetActive(true);
+        //             return;
+        //         }
+        //         return;
+        //     }
+        // }
 
         if (!HeroUIManager.Instance.IsLVMax(hero))
         {
diff --git a/Main/System/HeroUI/HeroUIManager.Reborn.cs b/Main/System/HeroUI/HeroUIManager.Reborn.cs
index 2156bf8..f17f8e8 100644
--- a/Main/System/HeroUI/HeroUIManager.Reborn.cs
+++ b/Main/System/HeroUI/HeroUIManager.Reborn.cs
@@ -55,8 +55,8 @@
         for (int i = 0; i < lv; i++)
         {
             var config = HeroQualityBreakConfig.GetQualityBreakConfig(quality, i);
-            var itemID = config.UPCostItem[0];
-            var count = config.UPCostItem[1];
+            var itemID = config.UPCostItemList[0][0];
+            var count = config.UPCostItemList[0][1];
             if (!itemCounDic.ContainsKey(itemID))
             {
                 itemCounDic[itemID] = count;
diff --git a/Main/System/HeroUI/HeroUIManager.cs b/Main/System/HeroUI/HeroUIManager.cs
index e8f86b2..5f556fc 100644
--- a/Main/System/HeroUI/HeroUIManager.cs
+++ b/Main/System/HeroUI/HeroUIManager.cs
@@ -178,7 +178,7 @@
 
     public int GetMaxLV(int quality)
     {
-        return HeroQualityBreakConfig.maxlvDic[quality];
+        return HeroQualityLVConfig.maxlvDic[quality];
     }
 
     //鏄惁杈惧埌鏈�楂樼骇
@@ -187,25 +187,16 @@
         return hero.heroLevel >= GetMaxLV(hero.Quality);
 
     }
-    //绐佺牬闄愬埗鐨勬渶楂樼瓑绾�; 濡傛灉瀛樺湪绐佺牬绛夌骇鍚庝笉鑳藉啀鍗囩骇鏄瓥鍒掗厤缃棶棰�
-    public int GetMaxLVByBreakLV(int quality, int breakLevel)
+    //绐佺牬鎵�闇�绛夌骇
+    public int GetNeedLVByBreakLV(int quality, int breakLevel)
     {
-        // for (int i = breakLevel; i >= 0; i--)
-        // {
-        //     var config = HeroQualityBreakConfig.GetQualityBreakConfig(quality, i);
-        //     if (config == null)
-        //     {
-        //         continue;
-        //     }
-        //     return config.LVMax;
-        // }
-        return HeroQualityBreakConfig.GetQualityBreakConfig(quality, breakLevel).LVMax;
+        return HeroQualityBreakConfig.GetQualityBreakConfig(quality, breakLevel).UPLVNeed;
     }
 
-    //鏄惁杈惧埌鍥犵獊鐮撮檺鍒剁殑鏈�楂樼骇
-    public bool IsLVMaxByBreakLevel(HeroInfo hero)
+    //鏄惁杈惧埌鍙獊鐮寸殑鏉′欢
+    public bool IsCanBreak(HeroInfo hero)
     {
-        return hero.heroLevel == GetMaxLVByBreakLV(hero.Quality, hero.breakLevel);
+        return hero.heroLevel >= GetNeedLVByBreakLV(hero.Quality, hero.breakLevel);
     }
 
     public int GetAllHeroPer()
@@ -508,10 +499,10 @@
         var maxBreakLV = HeroBreakConfig.GetMaxBreakLv(hero.heroId);
         if (hero.breakLevel < maxBreakLV)
         {
-            if (IsLVMaxByBreakLevel(hero))
+            if (IsCanBreak(hero))
             {
                 var breakConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel);
-                if (itemPack.GetCountById(breakConfig.UPCostItem[0]) >= breakConfig.UPCostItem[1])
+                if (itemPack.GetCountById(breakConfig.UPCostItemList[0][0]) >= breakConfig.UPCostItemList[0][1])
                 {
                     return 3;
                 }
diff --git a/Main/System/Main/HomeWin.cs b/Main/System/Main/HomeWin.cs
index 599bafc..c639f73 100644
--- a/Main/System/Main/HomeWin.cs
+++ b/Main/System/Main/HomeWin.cs
@@ -599,15 +599,17 @@
 
     private void DisplayFirstChargeBtn()
     {
-        bool isFirstChargeFuncOpen = FirstChargeManager.Instance.IsFuncOpen();
-        if (FirstChargeManager.Instance.IsAllFirstChargeRewardsClaimed() &&
-        FirstChargeManager.Instance.IsNextDayAfterAllClaimed())
+        bool isFuncOpen = FirstChargeManager.Instance.IsFuncOpen();
+        bool isAllHave = FirstChargeManager.Instance.IsAllFirstChargeRewardsClaimed();
+        bool isNextDay = FirstChargeManager.Instance.IsNextDayAfterAllClaimed();
+
+        if (isAllHave && isNextDay)
         {
             FirstChargeBtn.SetActive(false);
         }
         else
         {
-            FirstChargeBtn.SetActive(isFirstChargeFuncOpen);
+            FirstChargeBtn.SetActive(isFuncOpen);
         }
     }
 

--
Gitblit v1.8.0