From 973edc44a04dceb8b48a32ca912e6167f86189d4 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 25 八月 2025 17:38:02 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/HeroUI/HeroTrainWin.cs |  139 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 114 insertions(+), 25 deletions(-)

diff --git a/Main/System/HeroUI/HeroTrainWin.cs b/Main/System/HeroUI/HeroTrainWin.cs
index 513bb57..08b9b17 100644
--- a/Main/System/HeroUI/HeroTrainWin.cs
+++ b/Main/System/HeroUI/HeroTrainWin.cs
@@ -39,6 +39,7 @@
     [SerializeField] Image countryImg;
     [SerializeField] Text awakeLVText;
 
+    //灞炴�у尯
     [SerializeField] Button attrBtn;
     [SerializeField] Image unfoldImg; //灞曞紑鏃舵寜閽殑鍥炬爣
     [SerializeField] Image foldImg; //鏀惰捣鏃舵寜閽殑鍥炬爣
@@ -59,8 +60,15 @@
     [SerializeField] LongPressButton lvupBtn;
     [SerializeField] Button allAttrBtn;
     [SerializeField] Text allPotentialText; //娼滆兘
+    [SerializeField] Text[] fetterText;   //缇佺粖
+    [SerializeField] Text[] fetterNameText;   //缇佺粖
+
+
     string guid;
     HeroInfo hero;
+
+
+
     protected override void InitComponent()
     {
         showFuncBtn.AddListener(() =>
@@ -81,7 +89,7 @@
             ChangeHero(-1);
         });
 
-        lockBtn.AddListener(SetLockState);
+        lockBtn.AddListener(() => { hero.ChangeLockState(); });
         resetBtn.AddListener(ResetBtnClick);
         deleteBtn.AddListener(DeleteHero);
         awakeBtn.AddListener(() =>
@@ -119,6 +127,7 @@
     {
         PackManager.Instance.RefreshItemLockEvent += RefreshItemLockEvent;
         HeroManager.Instance.onHeroChangeEvent += RefreshHeroEvent;
+        UIManager.Instance.OnCloseWindow += OnCloseWindow;
         guid = HeroUIManager.Instance.selectHeroGuid;
         hero = HeroManager.Instance.GetHero(guid);
         unfoldState = false;
@@ -130,17 +139,30 @@
     {
         PackManager.Instance.RefreshItemLockEvent -= RefreshItemLockEvent;
         HeroManager.Instance.onHeroChangeEvent -= RefreshHeroEvent;
+        UIManager.Instance.OnCloseWindow -= OnCloseWindow;
     }
 
-
+    private void OnCloseWindow(UIBase closeUI)
+    {
+        //鍏朵粬鐣岄潰鍒犻櫎姝﹀皢浼氬奖鍝嶉�昏緫
+        if (closeUI is HeroDeleteWin)
+        {
+            HeroUIManager.Instance.SortHeroList();
+            if (HeroManager.Instance.GetHero(guid) == null)
+            {
+                CloseWindow();
+            }
+        }
+    }
     public override void Refresh()
     {
-        roleLhModel.Create(hero.SkinID, 0.6f, motionName: "", isLh: true);
+        roleLhModel.Create(hero.SkinID, HeroUIManager.lihuiScale, motionName: "", isLh: true);
         roleXsModel.Create(hero.SkinID);
         jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(hero.heroConfig.Class));
         jobPosNameText.text = HeroUIManager.Instance.GetJobName(hero.heroConfig.Class);
         descText.text = hero.heroConfig.Desc;
         fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculatePower());
+        PlayerMainDate.Instance.AddPowerNotOnTeam(hero);
         lockImg.SetActive(hero.isLock);
         unLockImg.SetActive(!hero.isLock);
         nameText.text = hero.breakLevel == 0 ? hero.heroConfig.Name : Language.Get("herocardbreaklv", hero.heroConfig.Name, hero.breakLevel);
@@ -161,6 +183,7 @@
         RefreshFoldState();
         RefreshAttr();
         RefreshAllPotential();
+        RefreshFetter();
     }
 
     void RefreshItemLockEvent(PackType type, string guid, bool lockState)
@@ -210,14 +233,6 @@
         Refresh();
     }
 
-    void SetLockState()
-    {
-        var pack = new CB238_tagCSHeroLock();
-        pack.ItemIndex = (ushort)hero.itemHero.gridIndex;
-        pack.IsLock = hero.isLock ? (byte)0 : (byte)1;
-        GameNetSystem.Instance.SendInfo(pack);
-    }
-
     void ResetBtnClick()
     {
         //鍗囩骇銆佺獊鐮淬�佽閱�
@@ -231,7 +246,7 @@
 
 
         var payBack1 = CommonFunc.AddDict(HeroUIManager.Instance.GetHeroLVPayBack(hero.Quality, hero.heroLevel),
-        HeroUIManager.Instance.GetHeroBreakPayBack(hero.heroId, hero.breakLevel));
+        HeroUIManager.Instance.GetHeroBreakPayBack(hero.Quality, hero.breakLevel));
 
         //宸茶閱掔殑闇�瑕佹秷鑰楄揣甯�
         if (hero.awakeLevel == 0)
@@ -248,17 +263,30 @@
         }
         else
         {
-            payBack1 = CommonFunc.AddDict(payBack1, HeroUIManager.Instance.GetHeroQualityAwakePayBack(hero.heroId, hero.awakeLevel));
+
+            if (HeroUIManager.Instance.awakeRebirthCnt >= HeroUIManager.Instance.rebornAwakeHeroMaxCount)
+            {
+                SysNotifyMgr.Instance.ShowTip("HeroRebornAwakeMax");
+                return;
+            }
+
+            payBack1 = CommonFunc.AddDict(payBack1, HeroUIManager.Instance.GetHeroQualityAwakePayBack(hero.Quality, hero.awakeLevel));
             items = CommonFunc.ChangeToItemList(payBack1);
             var info2 = Language.Get("herocard44", HeroUIManager.Instance.awakeRebirthCnt);
+            var payBackMoney = HeroQualityAwakeConfig.GetQualityAwakeConfig(hero.Quality, hero.awakeLevel).RebirthCostMoney;
             ConfirmCancel.ShowItemsConfirm(items, Language.Get("herocard42"), Language.Get("herocard43"), (bool isOk) =>
             {
                 if (isOk)
                 {
+                    if (UIHelper.GetMoneyCnt(HeroUIManager.Instance.payBackMoneyType) < payBackMoney)
+                    {
+                        ItemTipUtility.ShowMoneyTip(HeroUIManager.Instance.payBackMoneyType);
+                        return;
+                    }
                     //鍙戝寘
                     SendReborn(hero.itemHero.gridIndex);
                 }
-            }, info2, "", HeroUIManager.Instance.payBackMoney, HeroUIManager.Instance.payBackMoneyType);
+            }, info2, "", payBackMoney, HeroUIManager.Instance.payBackMoneyType);
 
         }
 
@@ -269,15 +297,20 @@
         var pack = new CB239_tagCSHeroRebirth();
         pack.ItemIndex = (ushort)index;
         GameNetSystem.Instance.SendInfo(pack);
+
+        HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false));
+
     }
 
     void DeleteHero()
     {
-        if (hero.isLock)
-        {
-            SysNotifyMgr.Instance.ShowTip("UnlockHero");
-            return;
-        }
+        // if (hero.isLock)
+        // {
+        //     SysNotifyMgr.Instance.ShowTip("UnlockHero");
+        //     return;
+        // }
+
+        UIManager.Instance.OpenWindow<HeroDeleteWin>();
     }
 
     void RefreshStars()
@@ -376,14 +409,14 @@
                 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], (ulong)breakConfig.UPCostItem[1]);
+                lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, breakConfig.UPCostItem[0], breakConfig.UPCostItem[1], TextColType.NavyBrown);
             }
             else
             {
                 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], (ulong)lvupConfig.UPCostItem[1]);
+                lvupMoneyText.text = UIHelper.ShowUseItem(PackType.Item, lvupConfig.UPCostItem[0], lvupConfig.UPCostItem[1], TextColType.NavyBrown);
             }
 
         }
@@ -400,7 +433,7 @@
     void LVUp()
     {
         int itemID = 0;
-        ulong needCount = 0;
+        long needCount = 0;
         if (HeroUIManager.Instance.IsLVMaxByBreakLevel(hero))
         {
             //绐佺牬
@@ -415,7 +448,7 @@
             //鍗囩骇
             var lvupConfig = HeroQualityLVConfig.GetQualityLVConfig(hero.Quality, hero.heroLevel);
             itemID = lvupConfig.UPCostItem[0];
-            needCount = (ulong)lvupConfig.UPCostItem[1];
+            needCount = lvupConfig.UPCostItem[1];
             if (ItemLogicUtility.CheckItemCount(PackType.Item, itemID, needCount, 2))
             {
                 var pack = new CB230_tagCSHeroLVUP();
@@ -432,6 +465,7 @@
                 {
                     addPerObject.SetActive(false);
                 });
+                HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false));
             }
 
         }
@@ -456,13 +490,26 @@
             List<string> attrStrArr = new List<string>();
             for (int j = 0; j < nextQualityBreakConfig.AttrIDList.Length; j++)
             {
+                if (nextQualityBreakConfig.AttrIDList[j] == 0)
+                    continue;
                 string format = i < hero.breakLevel ? "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}") : "{0}+{1}";
                 attrStrArr.Add(PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[j], nextQualityBreakConfig.AttrValueList[j], format));
             }
+
             if (nextQualityBreakConfig.SkillID != 0)
             {
-                attrStrArr.Add(SkillConfig.Get(nextQualityBreakConfig.SkillID)?.Description);
+                var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID);
+                if (skill != null)
+                {
+                    attrStrArr.Add(skill.Description);
+                }
+                else
+                {
+                    Debug.LogError("鏈厤缃妧鑳�" + nextQualityBreakConfig.SkillID);
+                }
             }
+
+
             if (i < hero.breakLevel)
             {
                 allAttrStr += Language.Get("herocard63", i + 1, string.Join(Language.Get("L1112"), attrStrArr)) + "\n";
@@ -475,6 +522,48 @@
         }
 
         allPotentialText.text = allAttrStr.Trim();
-    
+
     }
+
+    //缇佺粖
+    void RefreshFetter()
+	{
+        for (int i = 0; i < fetterText.Length; i++)
+        {
+            if (i < hero.heroConfig.FetterIDList.Length)
+            {
+                fetterText[i].SetActive(true);
+                var fetterID = hero.heroConfig.FetterIDList[i];
+                HeroFetterConfig fetterConfig = HeroFetterConfig.Get(fetterID);
+                List<string> heroNames = new List<string>();
+                bool isAllCollect = true; //鏄惁鍏ㄦ敹闆�
+                foreach (var tmpHeroID in fetterConfig.HeroIDList)
+                {
+                    heroNames.Add(HeroConfig.Get(tmpHeroID).Name);
+                    if (HeroManager.Instance.GetHeroCountByID(tmpHeroID) == 0)
+                    {
+                        isAllCollect = false;
+                    }
+                }
+                var attrStr = string.Join(Language.Get("SplitString1"), heroNames) + Language.Get("herocard38");
+
+                for (int j = 0; j < fetterConfig.AttrIDList.Length; j++)
+                {
+                    string format = !isAllCollect ? "{0}+{1}" : "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}");
+                    attrStr += Language.Get("L1112") + PlayerPropertyConfig.GetFullDescription(fetterConfig.AttrIDList[j], fetterConfig.AttrValueList[j], format);
+                }
+                fetterText[i].text = attrStr;
+                fetterText[i].color = UIHelper.GetUIColor(isAllCollect ? TextColType.NavyBrown : TextColType.Gray);
+                fetterNameText[i].text = fetterConfig.FetterName;
+                fetterNameText[i].color = UIHelper.GetUIColor(isAllCollect ? TextColType.NavyBrown : TextColType.Gray);
+
+            }
+            else
+            {
+                fetterText[i].SetActive(false);
+            }
+        }
+
+
+	}
 }
\ No newline at end of file

--
Gitblit v1.8.0