From e2d4f9314a5097f961250b5e06b66660dc247312 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 11 十一月 2025 17:05:03 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/FirstCharge/FirstChargeManager.cs         |   76 +++++++++++++-
 Main/System/HeroUI/HeroUIManager.OnTeam.cs            |    4 
 Main/Component/UI/Core/GradientText.cs                |    2 
 Main/System/Battle/BattleManager.cs                   |   12 ++
 Main/System/BattlePass/BattlePassCommonCell.cs        |   24 +++-
 Main/System/BattlePass/BattlePassCommonWin.cs         |   12 +-
 Main/System/MainLevel/MainBossEnterWin.cs             |    1 
 Main/System/Settlement/BattleFailWin.cs               |    4 
 Main/Component/UI/Effect/EllipseMask.cs               |    5 
 Main/ResModule/ResManager.cs                          |    8 +
 Main/System/Arena/ArenaBattleFailWin.cs               |    4 
 Main/System/HeroUI/HeroBestWin.cs                     |   34 ++++++
 Main/System/Battle/BattleField/BattleField.cs         |   12 ++
 Main/Utility/UIHelper.cs                              |    8 
 Main/System/Battle/BattleObject/BattleObject.cs       |   11 +
 Main/System/Main/HomeWin.cs                           |   33 ++++-
 Main/System/Settlement/BoneBattleFailWin.cs           |    4 
 Main/Main.cs                                          |    2 
 Main/System/ItemTip/OwnMoneyCell.cs                   |    9 +
 Main/Component/UI/Effect/EffectPlayer.cs              |    4 
 Main/System/NewBieGuidance/NewBieCenter.cs            |   12 ++
 Main/System/TianziBillborad/TianziBillboradManager.cs |    2 
 Main/System/NewBieGuidance/NewBieWin.cs               |    3 
 23 files changed, 236 insertions(+), 50 deletions(-)

diff --git a/Main/Component/UI/Core/GradientText.cs b/Main/Component/UI/Core/GradientText.cs
index 8739e68..fa91a58 100644
--- a/Main/Component/UI/Core/GradientText.cs
+++ b/Main/Component/UI/Core/GradientText.cs
@@ -5,7 +5,7 @@
 /// <summary>
 /// 鏀寔娓愬彉鏁堟灉鐨勬枃鏈粍浠�
 /// </summary>
-public class GradientText : Text
+public class GradientText : RichText
 {
     [Header("娓愬彉璁剧疆")]
     [SerializeField]
diff --git a/Main/Component/UI/Effect/EffectPlayer.cs b/Main/Component/UI/Effect/EffectPlayer.cs
index 3fdbc6c..eec97f3 100644
--- a/Main/Component/UI/Effect/EffectPlayer.cs
+++ b/Main/Component/UI/Effect/EffectPlayer.cs
@@ -260,8 +260,8 @@
         {
             //LoadAsset 宸茬粡鏈夌紦瀛楽keletonDataAsset
             spineComp.skeletonDataAsset = ResManager.Instance.LoadAsset<SkeletonDataAsset>("UIEffect/" + effectConfig.packageName, effectConfig.fxName);
-            //涓簍rue鏃朵細鏈夐儴鍒嗙壒鏁堜笉鏄剧ず 濡備富鐣岄潰瑁呭鐗规晥锛涙敼鎴愪冀椹悗涓嶄細鍑虹幇BUG鏁呮敞閲婁唬鐮�
-            // spineComp.MeshGenerator.settings.pmaVertexColors = !closePMA;   
+            //涓簍rue鏃朵細鏈夐儴鍒嗙壒鏁堜笉鏄剧ず 濡傛弧绾х粡楠屾潯锛涙敼鎴愪冀椹悗閮ㄥ垎鐗规晥姝e父锛岃繕鏈夐儴鍒嗕緷鐒惰鏀规璁剧疆
+            spineComp.MeshGenerator.settings.pmaVertexColors = !closePMA;   
             spineComp.raycastTarget = false;
             spineComp.Initialize(true);
             spineComp.timeScale = speedRate;
diff --git a/Main/Component/UI/Effect/EllipseMask.cs b/Main/Component/UI/Effect/EllipseMask.cs
index b12ec51..7bb4179 100644
--- a/Main/Component/UI/Effect/EllipseMask.cs
+++ b/Main/Component/UI/Effect/EllipseMask.cs
@@ -154,7 +154,7 @@
     {
         if (m_MaskMaterial == null)
         {
-            Shader ellipseShader = Shader.Find("GUI/EllipseMask");
+            Shader ellipseShader = ResManager.Instance.LoadAsset<Shader>("Shader", "GUI_EllipseMask");
             if (ellipseShader != null)
             {
                 m_MaskMaterial = new Material(ellipseShader);
@@ -237,7 +237,8 @@
     {
         if (graphic.material == null || !graphic.material.shader.name.Contains("EllipseMaskedContent"))
         {
-            Shader maskedShader = Shader.Find("GUI/EllipseMaskedContent");
+            // Shader maskedShader = Shader.Find("GUI/EllipseMaskedContent");
+            Shader maskedShader = ResManager.Instance.LoadAsset<Shader>("Shader", "GUI_EllipseMaskedContent");
             if (maskedShader != null)
             {
                 Material maskedMaterial = new Material(maskedShader);
diff --git a/Main/Main.cs b/Main/Main.cs
index dedde9d..c472246 100644
--- a/Main/Main.cs
+++ b/Main/Main.cs
@@ -113,6 +113,8 @@
         //  鍓嶉潰鏈夐噸鏂癐nitManagers浜� 杩欓噷灏变笉鍦ㄥ仛娓呴櫎
         // ReleaseMgrs();
         ClearGameData();
+        //閿�姣佹墍鏈夋垬鍦�
+        BattleManager.Instance.DestroyAllBattleField();
     }
 
     private static void ReleaseMgrs()
diff --git a/Main/ResModule/ResManager.cs b/Main/ResModule/ResManager.cs
index 27e2bac..62d5ac3 100644
--- a/Main/ResModule/ResManager.cs
+++ b/Main/ResModule/ResManager.cs
@@ -70,7 +70,7 @@
         {typeof(Sprite), "png"},
         {typeof(Texture2D), "jpg"},
         {typeof(Texture), "jpg"},
-        { typeof(Shader), "shader"},
+        {typeof(Shader), "shader"},
         {typeof(TextAsset), "txt"},
         {typeof(AudioClip), "wav"},
         {typeof(Font), "ttf"},
@@ -167,7 +167,7 @@
                 //澶栭儴鐢ㄥ埌鐨勮嚜宸卞姞鍚庣紑锛屽唴閮ㄧ粺涓�鍘婚櫎鍚庣紑鍚�
                 name = name.Substring(0, name.LastIndexOf("."));
             }
-
+            //TODO: 涓存椂鐗规畩澶勭悊鎵撳寘鍚庣殑璺緞璇诲彇
             if (directory == "UI" || directory == "UIComp" || directory.StartsWith("Sprite")
             || directory == "Battle/Prefabs" || directory == "Materials")
             {
@@ -182,6 +182,10 @@
             {
                 directory = "maps/" + name;
             }
+            else if (directory.Contains("Shader"))
+            {
+                directory = "graphic/shader";
+            }
 
 
             var assetInfo = new AssetInfo(directory.ToLower(), name.ToLower());
diff --git a/Main/System/Arena/ArenaBattleFailWin.cs b/Main/System/Arena/ArenaBattleFailWin.cs
index f655d2b..768d7ed 100644
--- a/Main/System/Arena/ArenaBattleFailWin.cs
+++ b/Main/System/Arena/ArenaBattleFailWin.cs
@@ -32,6 +32,10 @@
         }
         Display();
         CreateScroller();
+        if (!FirstChargeManager.Instance.GetLocalFail())
+        {
+            FirstChargeManager.Instance.SetLocalFail();
+        }
         FirstChargeManager.Instance.TryPopWin("ArenaBattleFailWin");
     }
 
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index c9a45a6..0537092 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -534,9 +534,21 @@
         recordPlayer.HaveRest();
         battleObjMgr.HaveRest(BattleCamp.Red);
         battleObjMgr.DestroyTeam(BattleCamp.Blue);
+        SetBattleStartState();
         SetBattleMode(BattleMode.Stop);
     }
 
+    //娓呭満鏁屾柟浣嗕笉缁堟鎴樻枟锛岀敤浜庡垏鎹富绾緽OSS鎴樻枟鍚庯紝姝e父鏄剧ず鏁屾柟
+    public virtual void CleanBattle()
+    {
+        battleEffectMgr.HaveRest();
+        battleTweenMgr.HaveRest();
+        recordPlayer.HaveRest();
+        battleObjMgr.HaveRest(BattleCamp.Blue);
+        battleObjMgr.DestroyTeam(BattleCamp.Blue);
+        SetBattleStartState();
+    }
+
     public bool IsBattleEnd()
     {
         return IsBattleFinish;
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index 4d0adc8..827433e 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -659,4 +659,16 @@
         }
         return null;
     }
+
+    public void DestroyAllBattleField()
+    {
+        foreach (var kvp in battleFields)
+        {
+            BattleField battleField = kvp.Value;
+            if (battleField == null)
+                continue;
+                
+            DestroyBattleField(battleField);
+        }
+    }
 }
\ No newline at end of file
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index debe190..723bb12 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -101,8 +101,15 @@
         var heroInfoBarScale = heroInfoBar.transform.localScale;
         heroInfoBarScale.x *= Camp == BattleCamp.Red ? 1 : -1;
         heroInfoBar.transform.localScale = heroInfoBarScale;
-
-        heroInfoBar.SetActive(true);
+        if (battleField is StoryBattleField && (battleField as StoryBattleField).battleState == StoryBattleState.Break)
+        {
+            //涓荤嚎鍏冲崱浼戞伅涓殑涓嶆樉绀鸿鏉�
+            heroInfoBar.SetActive(false);
+        }
+        else
+        {
+            heroInfoBar.SetActive(true);
+        }
         SetFront();
     }
 
diff --git a/Main/System/BattlePass/BattlePassCommonCell.cs b/Main/System/BattlePass/BattlePassCommonCell.cs
index 97acee5..52e769c 100644
--- a/Main/System/BattlePass/BattlePassCommonCell.cs
+++ b/Main/System/BattlePass/BattlePassCommonCell.cs
@@ -69,15 +69,23 @@
         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(() =>
+            if (i < config.ZLRewardItemList.Length)
             {
-                GetAward(battlePassData, betterAwardState, itemID);
-            });
-            betterGotRects[i].SetActive(betterAwardState == 2);
-            betterCanGetAwardRects[i].SetActive(betterAwardState == 1);
-            betterLockRects[i].SetActive(battlePassData.isActivite == 0);
+                betterAwards[i].SetActive(true);
+                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);
+            }
+            else
+            {
+                betterAwards[i].SetActive(false);
+            }
         }
     }
 
diff --git a/Main/System/BattlePass/BattlePassCommonWin.cs b/Main/System/BattlePass/BattlePassCommonWin.cs
index 6d2c03d..273c821 100644
--- a/Main/System/BattlePass/BattlePassCommonWin.cs
+++ b/Main/System/BattlePass/BattlePassCommonWin.cs
@@ -81,12 +81,7 @@
         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);
-        }
-
+        itemNameText.text = Language.Get("BattlePassAD" + battlePasstype);
         tabNameText.text = Language.Get("BattlePassTab" + battlePasstype);
         titleText.text = Language.Get("BattlePassTitle" + battlePasstype);
     }
@@ -99,6 +94,7 @@
         lockRect.SetActive(battlePassData.isActivite == 0);
         scroller.m_Scorller.RefreshActiveCellViews();
 
+        var _rect = scroller.GetComponent<RectTransform>();
         if (battlePassData.isActivite == 0)
         {
             rechargeRect.SetActive(true);
@@ -114,11 +110,15 @@
             {
                 ItemTipUtility.Show(itemID);
             });
+            _rect.sizeDelta = new Vector2(_rect.rect.width, 630);
         }
         else
         {
             rechargeRect.SetActive(false);
+            _rect.sizeDelta = new Vector2(_rect.rect.width, 757);
         }
+
+
     }
 
     void ShowTotalValueStr()
diff --git a/Main/System/FirstCharge/FirstChargeManager.cs b/Main/System/FirstCharge/FirstChargeManager.cs
index 3a5d7cd..bc6f145 100644
--- a/Main/System/FirstCharge/FirstChargeManager.cs
+++ b/Main/System/FirstCharge/FirstChargeManager.cs
@@ -4,7 +4,8 @@
 
 public class FirstChargeManager : GameSystemManager<FirstChargeManager>
 {
-    public const int FuncID = 21;
+    public int taskID;
+    public int nextTaskID;
     public int mainItemId { get { return GetMainItemId(); } }
     public int heroItemID;
     public int maxGiftCount
@@ -27,7 +28,7 @@
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
         RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent;
-        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+        TaskManager.Instance.OnTaskUpdate += OnTaskUpdate;
         InitClickTabDict();
         InitRedPoint();
     }
@@ -37,21 +38,28 @@
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
         RechargeManager.Instance.rechargeCountEvent -= OnRechargeCountEvent;
-        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+        TaskManager.Instance.OnTaskUpdate -= OnTaskUpdate;
     }
 
-    private void OnFuncStateChangeEvent(int obj)
+
+    public event Action OnFirstChargeTaskUpdateEvent;
+    int beforeMainID;
+    private void OnTaskUpdate()
     {
-        if (FuncID == obj)
+        int currentTaskID = TaskManager.Instance.mainTask.TaskID;
+
+        if (beforeMainID == taskID && currentTaskID == nextTaskID)
         {
-            string key = $"FirstCharge_FirstTime_{FuncID}_{PlayerDatas.Instance.baseData.PlayerID}";
+            string key = $"FirstCharge_FirstTime_{taskID}_{PlayerDatas.Instance.baseData.PlayerID}";
             if (!LocalSave.HasKey(key))
             {
-                // 绗竴娆″紑鍚姛鑳�
+                // 绗竴娆″畬鎴愪换鍔�
                 LocalSave.SetBool(key, true);
                 PopupWindowsProcessor.Instance.Add("FirstChargeWin");
+                OnFirstChargeTaskUpdateEvent?.Invoke();
             }
         }
+        beforeMainID = currentTaskID;
     }
 
     public void InitClickTabDict()
@@ -108,11 +116,15 @@
     public void OnBeforePlayerDataInitializeEvent()
     {
         firstChargeInfoDict.Clear();
+
+        FuncConfigConfig config = FuncConfigConfig.Get("FirstCharge");
+        taskID = int.Parse(config.Numerical1);
+        nextTaskID = int.Parse(config.Numerical2);
     }
 
     public void OnPlayerLoginOk()
     {
-        if (FuncOpen.Instance.IsFuncOpen(FuncID) && TryGetUnBuyFirstId(out int firstId))
+        if (IsFuncOpen() && TryGetUnBuyFirstId(out int firstId))
         {
             PopupWindowsProcessor.Instance.Add("FirstChargeWin");
         }
@@ -130,6 +142,8 @@
             return;
         if (battleName == "TianziBillboradBattleField")
             return;
+        if (!IsFuncOpen())
+            return;
         if (!TryGetUnBuyFirstId(out int firstId))
             return;
         if (!UIManager.Instance.IsOpened<FirstChargeWin>())
@@ -138,6 +152,52 @@
         }
     }
 
+    public string loaclKey = "FirstCharge_Fail_";
+
+    public bool GetLocalFail()
+    {
+        return LocalSave.GetBool(StringUtility.Contact(loaclKey + PlayerDatas.Instance.PlayerId));
+    }
+
+    public void SetLocalFail()
+    {
+        LocalSave.SetBool(StringUtility.Contact(loaclKey + PlayerDatas.Instance.PlayerId), true);
+    }
+
+    public bool IsFuncOpen()
+    {
+        if (IsBuyOne())
+            return true;
+        if (TaskConfig.HasKey(taskID) &&
+        TaskManager.Instance.mainTask != null &&
+       TaskConfig.HasKey(TaskManager.Instance.mainTask.TaskID) &&
+       TaskManager.Instance.GetNeedFinishTaskCount(taskID) <= 0)
+            return true;
+        bool isLocalFail = GetLocalFail();
+        return isLocalFail;
+    }
+
+    //  鏈変竴妗h璐拱灏辫繑鍥瀟rue
+    public bool IsBuyOne()
+    {
+        var firstChargeList = FirstChargeConfig.GetKeys();
+        if (firstChargeList != null)
+        {
+            firstChargeList.Sort();
+            foreach (int item in firstChargeList)
+            {
+                if (TryGetFirstChargeDataByFirstId(item, out FirstChargeData data))
+                {
+                    if (data.IsUnlock() && data.IsBuy())
+                    {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
     public bool TryGetUnBuyFirstId(out int firstId)
     {
         firstId = 0;
diff --git a/Main/System/HeroUI/HeroBestWin.cs b/Main/System/HeroUI/HeroBestWin.cs
index f6db6d3..ccf470b 100644
--- a/Main/System/HeroUI/HeroBestWin.cs
+++ b/Main/System/HeroUI/HeroBestWin.cs
@@ -1,5 +1,6 @@
 using System.Collections.Generic;
 using System.Linq;
+using Cysharp.Threading.Tasks;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -159,8 +160,31 @@
         RefreshFetter();
         RefreshGift();
         RefreshAwake();
+        ForceRefreshLayout();
     }
 
+
+
+    /// <summary>
+    /// 寮哄埗鍒锋柊Layout锛岃В鍐冲祵濂桳ayout鍜孋ontentSizeFitter鐨勯噸鍙犻棶棰�
+    /// </summary>
+    async UniTask ForceRefreshLayout()
+    {
+        await UniTask.DelayFrame(2);
+        // 鍒锋柊鎵�鏈塋ayout缁勪欢
+        var layouts = allAttrScroll.GetComponentsInChildren<LayoutGroup>(true);
+        foreach (var layout in layouts)
+        {
+            LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
+        }
+        await UniTask.DelayFrame(2);
+        // 鍒锋柊鎵�鏈塋ayout缁勪欢
+        foreach (var layout in layouts)
+        {
+            LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
+        }
+
+    }
 
 
     void RefreshConn()
@@ -255,8 +279,10 @@
             foldImg.SetActive(true);
             unfoldImg.SetActive(false);
             attrPanel.localPosition = foldPos.localPosition;
-            //绂佹attrScroll婊氬姩
-            allAttrScroll.enabled = false;
+            // //绂佹attrScroll婊氬姩
+            // allAttrScroll.enabled = false;
+            var _rect = allAttrScroll.GetComponent<RectTransform>();
+            _rect.sizeDelta = new Vector2(_rect.rect.width, 197);
 
         }
         else
@@ -264,7 +290,9 @@
             foldImg.SetActive(false);
             unfoldImg.SetActive(true);
             attrPanel.localPosition = unfoldPos.localPosition;
-            allAttrScroll.enabled = true;
+            // allAttrScroll.enabled = true;
+            var _rect = allAttrScroll.GetComponent<RectTransform>();
+            _rect.sizeDelta = new Vector2(_rect.rect.width, 933);
         }
     }
 
diff --git a/Main/System/HeroUI/HeroUIManager.OnTeam.cs b/Main/System/HeroUI/HeroUIManager.OnTeam.cs
index 7efa4f4..322a874 100644
--- a/Main/System/HeroUI/HeroUIManager.OnTeam.cs
+++ b/Main/System/HeroUI/HeroUIManager.OnTeam.cs
@@ -297,9 +297,11 @@
         //鎺ㄨ崘鏈�澶�6涓紝瀛樺湪鐩稿悓heroid锛屽垯璺宠繃
         List<string> selectHeroList = new List<string>();
         List<int> selectHeroIDList = new List<int>();
+
+        int maxCnt = TeamConst.MaxTeamHeroCount - lockIndexList.Count;
         for (int i = 0; i < tmpList.Count; i++)
         {
-            if (selectHeroList.Count >= TeamConst.MaxTeamHeroCount)
+            if (selectHeroList.Count >= maxCnt)
                 break;
 
             string guid = tmpList[i];
diff --git a/Main/System/ItemTip/OwnMoneyCell.cs b/Main/System/ItemTip/OwnMoneyCell.cs
index afd95cc..0369a9b 100644
--- a/Main/System/ItemTip/OwnMoneyCell.cs
+++ b/Main/System/ItemTip/OwnMoneyCell.cs
@@ -64,7 +64,14 @@
             // Debug.LogError("moneyType == 0");
             return;
         }
-        numText.text = UIHelper.ReplaceLargeNum(UIHelper.GetMoneyCnt(moneyType));
+        double count = UIHelper.GetMoneyCnt(moneyType);
+        int decimalPlaces = 1;
+        if (moneyType == 99)
+        {
+            count = count / 100.0;
+            decimalPlaces = 2;
+        }
+        numText.text = UIHelper.ReplaceLargeNum(count, decimalPlaces);
         if (resetIcon)
         { 
             moneyIcon.SetIconWithMoneyType(moneyType);
diff --git a/Main/System/Main/HomeWin.cs b/Main/System/Main/HomeWin.cs
index 95fce4a..141b0fd 100644
--- a/Main/System/Main/HomeWin.cs
+++ b/Main/System/Main/HomeWin.cs
@@ -1,6 +1,7 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using DG.Tweening;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -13,6 +14,8 @@
     //缁忛獙鍖�
     [SerializeField] Text playerLevelText;
     [SerializeField] SmoothSlider expSlider;
+    [SerializeField] UIEffectPlayer fullEffect;
+    [SerializeField] UIEffectPlayer headEffect;
     [SerializeField] Button officialUpBtn;
     [SerializeField] Transform officialTip;
 
@@ -150,6 +153,8 @@
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
         HeroUIManager.Instance.OnUnLockHeroCountEvent += OnUnLockHeroCountEvent;
         OfficialRankManager.Instance.OnOfficialCanLVUpEvent += OnOfficialCanLVUpEvent;
+        FirstChargeManager.Instance.OnFirstChargeTaskUpdateEvent += OnFirstChargeTaskUpdateEvent;
+        OfficialRankManager.Instance.RealmMissionRefreshEvent += OnOfficialCanLVUpEvent;
         Display();
         DisplayFirstChargeBtn();
 
@@ -173,7 +178,8 @@
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         HeroUIManager.Instance.OnUnLockHeroCountEvent -= OnUnLockHeroCountEvent;
         OfficialRankManager.Instance.OnOfficialCanLVUpEvent -= OnOfficialCanLVUpEvent;
-
+        FirstChargeManager.Instance.OnFirstChargeTaskUpdateEvent -= OnFirstChargeTaskUpdateEvent;
+        OfficialRankManager.Instance.RealmMissionRefreshEvent -= OnOfficialCanLVUpEvent;
         //  鍏抽棴鐨勬椂鍊欐妸鎴樻枟鐣岄潰涔熺粰鍏充簡 铏界劧鏄湪澶栭潰寮�鐨�
         UIManager.Instance.CloseWindow<BattleWin>();
     }
@@ -211,6 +217,8 @@
                 {
                     lastLV = PlayerDatas.Instance.baseData.LV;
                     lvUPEffect.Play();
+                    fullEffect.Play(closePMA: true);
+                    headEffect.Stop();
                 }
                 playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString();
                 break;
@@ -260,15 +268,21 @@
     private void UpdatePlayerInfo()
     {
         playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString();
-        ShowExp();
+        headEffect.transform.localPosition = new Vector3(400 * expSlider.value - 200 - 24, 0, 0);
+        ShowExp(false);
 
     }
 
-    void ShowExp()
+    void ShowExp(bool showEffect = true)
     {
         var lvConfig = PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV);
         expSlider.value = (float)PlayerDatas.Instance.baseData.curExp / lvConfig.EXP;
         expSlider.Text.text = PlayerDatas.Instance.baseData.curExp + "/" + PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV).EXP;
+        if (showEffect)
+        {
+            headEffect.transform.DOLocalMove(new Vector3(400 * expSlider.value - 200 - 24, 0, 0), 0.5f);
+            headEffect.Play(closePMA:true);
+        }
     }
 
 
@@ -313,6 +327,7 @@
             getReward.RewardType = 66;
             getReward.DataEx = (uint)TaskManager.Instance.mainTask.TaskID;
             GameNetSystem.Instance.SendInfo(getReward);
+            return;
         }
         
         TaskManager.Instance.ClickTask();
@@ -428,7 +443,7 @@
 
     private void DisplayFirstChargeBtn()
     {
-        bool isFirstChargeFuncOpen = FuncOpen.Instance.IsFuncOpen(FirstChargeManager.FuncID);
+        bool isFirstChargeFuncOpen = FirstChargeManager.Instance.IsFuncOpen();
         if (FirstChargeManager.Instance.IsAllFirstChargeRewardsClaimed() &&
         FirstChargeManager.Instance.IsNextDayAfterAllClaimed())
         {
@@ -438,16 +453,16 @@
         {
             FirstChargeBtn.SetActive(isFirstChargeFuncOpen);
         }
+    }
 
+    private void OnFirstChargeTaskUpdateEvent()
+    {
+        DisplayFirstChargeBtn();
     }
 
     private void OnFuncStateChange(int funcId)
     {
-        if (funcId == FirstChargeManager.FuncID)
-        {
-            DisplayFirstChargeBtn();
-        }
-        else if (funcId == GeneralDefine.mainRightFuncOpenFuncID)
+        if (funcId == GeneralDefine.mainRightFuncOpenFuncID)
         {
             funcColBtn.SetActive(FuncOpen.Instance.IsFuncOpen(GeneralDefine.mainRightFuncOpenFuncID));
         }
diff --git a/Main/System/MainLevel/MainBossEnterWin.cs b/Main/System/MainLevel/MainBossEnterWin.cs
index 7bde641..8d0ad2a 100644
--- a/Main/System/MainLevel/MainBossEnterWin.cs
+++ b/Main/System/MainLevel/MainBossEnterWin.cs
@@ -137,6 +137,7 @@
         if (MainLevelManager.Instance.CanChallengeBoss())
         {
             BattleManager.Instance.SendTurnFight(2);
+            BattleManager.Instance.storyBattleField.CleanBattle();
             AutoFightModel.Instance.isPause = true;
         }
         CloseWindow();
diff --git a/Main/System/NewBieGuidance/NewBieCenter.cs b/Main/System/NewBieGuidance/NewBieCenter.cs
index 4344ee0..39c7855 100644
--- a/Main/System/NewBieGuidance/NewBieCenter.cs
+++ b/Main/System/NewBieGuidance/NewBieCenter.cs
@@ -95,6 +95,15 @@
                 }
             }
         }
+
+        if (_ui.name == "StoryBossBattleWin")
+        {
+            var guides = GuideConfig.GetGuideListByType((int)GuideTriggerType.PassMainBoss);
+            if (guides != null)
+            {
+                TryStartNewBieGuides(guides, true);
+            }
+        }
     }
 
     void OnTaskUpdateEvent()
@@ -470,6 +479,8 @@
                     return TaskManager.Instance.GetMainTaskType() == config.Condition && TaskManager.Instance.GetMainTaskState() != 2;
                 }
                 return false;
+            case GuideTriggerType.PassMainBoss:
+                return PlayerDatas.Instance.baseData.ExAttr1/100 >= config.Condition;
             default:
                 return false;
         }
@@ -550,5 +561,6 @@
     OpenWindow = 5,     //鎵撳紑鐣岄潰鐨勬椂鏈� 濡傝澶囨浛鎹㈢晫闈�
     Level = 6,      //绛夌骇婊¤冻鏉′欢
     Realm = 7,  //瀹樿亴鎵�鏈変换鍔″畬鎴愭椂瑙﹀彂寮曞锛屽6鍗�7锛�6鐨勪换鍔″叏閮ㄥ畬鎴愶紝閰嶇疆6
+    PassMainBoss = 8, //閫氬叧涓荤嚎BOSS锛屽湪鍏抽棴鐣岄潰StoryBossBattleWin鏃惰Е鍙戯紝瑙﹀彂鏉′欢涓洪�氬叧鍚庣殑鍏冲崱濡�201
 
 }
\ No newline at end of file
diff --git a/Main/System/NewBieGuidance/NewBieWin.cs b/Main/System/NewBieGuidance/NewBieWin.cs
index d4781a7..a4d4763 100644
--- a/Main/System/NewBieGuidance/NewBieWin.cs
+++ b/Main/System/NewBieGuidance/NewBieWin.cs
@@ -111,6 +111,9 @@
             CloseWindow();
             return;
         }
+
+        Debug.Log($"寮曞ID锛歿NewBieCenter.Instance.currentGuide} 寮曞姝ラ锛歿step}");
+
         lastShowTime = Time.time;
 
         if (config.WinName != "EquipExchangeWin" && UIManager.Instance.IsOpened<EquipExchangeWin>())
diff --git a/Main/System/Settlement/BattleFailWin.cs b/Main/System/Settlement/BattleFailWin.cs
index e2d0a99..168e7a6 100644
--- a/Main/System/Settlement/BattleFailWin.cs
+++ b/Main/System/Settlement/BattleFailWin.cs
@@ -28,6 +28,10 @@
 
     protected override void OnPreOpen()
     {
+        if (!FirstChargeManager.Instance.GetLocalFail())
+        {
+            FirstChargeManager.Instance.SetLocalFail();
+        }
         FirstChargeManager.Instance.TryPopWin("BattleFailWin");
     }
 
diff --git a/Main/System/Settlement/BoneBattleFailWin.cs b/Main/System/Settlement/BoneBattleFailWin.cs
index 342254d..f3f8bfd 100644
--- a/Main/System/Settlement/BoneBattleFailWin.cs
+++ b/Main/System/Settlement/BoneBattleFailWin.cs
@@ -30,6 +30,10 @@
     {
         int funcId = BoneFieldManager.Instance.funcId;
         txtFuncName.text = FuncOpenLVConfig.HasKey(funcId) ? FuncOpenLVConfig.Get(funcId).Name : string.Empty;
+        if (!FirstChargeManager.Instance.GetLocalFail())
+        {
+            FirstChargeManager.Instance.SetLocalFail();
+        }
         FirstChargeManager.Instance.TryPopWin("BoneBattleFailWin");
     }
 
diff --git a/Main/System/TianziBillborad/TianziBillboradManager.cs b/Main/System/TianziBillborad/TianziBillboradManager.cs
index e4673cb..cd29526 100644
--- a/Main/System/TianziBillborad/TianziBillboradManager.cs
+++ b/Main/System/TianziBillborad/TianziBillboradManager.cs
@@ -349,7 +349,7 @@
             for (int i = 0; i < jsonData["itemInfo"].Count; i++)
             {
                 JsonData itemData = jsonData["itemInfo"][i];
-                Item itemInfo = new Item((int)itemData["ItemID"], (long)itemData["ItemID"]);
+                Item itemInfo = new Item((int)itemData["ItemID"], (long)itemData["Count"]);
                 itemInfos.Add(itemInfo);
             }
         }
diff --git a/Main/Utility/UIHelper.cs b/Main/Utility/UIHelper.cs
index 8767f39..bb0b2ad 100644
--- a/Main/Utility/UIHelper.cs
+++ b/Main/Utility/UIHelper.cs
@@ -226,7 +226,7 @@
     /// 澶ф暟鍊艰浆鍖� 鏍煎紡 鏈�澶氫袱涓皬鏁� ,鍚戜笅鍙栨暣
     /// K -鍗冿紝M -鐧捐惉锛孊-鍗佸剟锛孴 -钀剟
     /// </summary>
-    public static string ReplaceLargeNum(double num)
+    public static string ReplaceLargeNum(double num, int decimalPlaces = 1)
     {
         const long K = 10000;    //鍥藉唴涓轰竾锛屾捣澶栦负鍗�
         const long M = K * 10000;
@@ -243,15 +243,15 @@
         }
         else if (num >= M)
         {
-            return StringUtility.Contact(FormatWithoutRounding(num / M, 1), Language.Get("L1070"));
+            return StringUtility.Contact(FormatWithoutRounding(num / M, decimalPlaces), Language.Get("L1070"));
         }
         else if (num >= K)
         {
-            return StringUtility.Contact(FormatWithoutRounding(num / K, 1), Language.Get("L1071"));
+            return StringUtility.Contact(FormatWithoutRounding(num / K, decimalPlaces), Language.Get("L1071"));
         }
         else
         {
-            return FormatWithoutRounding(num, 1);
+            return FormatWithoutRounding(num, decimalPlaces);
         }
     }
 

--
Gitblit v1.8.0