hch
2025-09-09 7ee06a9d53a47b106458c571fadbb7583b570766
Main/System/HeroUI/HeroTrainWin.cs
@@ -80,6 +80,12 @@
    [SerializeField] Text starUPBtnText;
    [SerializeField] Button washBtn;
    //冻结处理
    [SerializeField] Button freezeTipBtn;
    [SerializeField] GameObject freezeTipGo;
    [SerializeField] Text freezeStarText;
    [SerializeField] Text freezeAawkeLVText;
    [SerializeField] List<Image> starImgFreezeList;
    string guid;
    HeroInfo hero;
@@ -107,7 +113,10 @@
        });
        lockBtn.AddListener(() => { hero.ChangeLockState(); });
        resetBtn.AddListener(ResetBtnClick);
        resetBtn.AddListener(() =>
        {
            HeroUIManager.Instance.ResetBtnClick(hero);
        });
        deleteBtn.AddListener(DeleteHero);
        awakeBtn.AddListener(() =>
        {
@@ -156,6 +165,11 @@
        potentialCellList = new List<GameObject>();
        awakeCellList = new List<GameObject>();
        freezeTipBtn.AddListener(() =>
        {
            freezeTipGo.SetActive(!freezeTipGo.activeSelf);
        });
    }
@@ -226,6 +240,7 @@
        RefreshFetter();
        RefreshGift();
        RefreshAwake();
        RefreshFreeze();
    }
    void RefreshItemLockEvent(PackType type, string guid, bool lockState)
@@ -276,74 +291,9 @@
        Display();
    }
    void ResetBtnClick()
    {
        //升级、突破、觉醒
        if (hero.heroLevel == 1 && hero.breakLevel == 0 && hero.awakeLevel == 0)
        {
            SysNotifyMgr.Instance.ShowTip("HeroCanNotReset");
            return;
        }
        List<Item> items = new List<Item>();
        var payBack1 = CommonFunc.AddDict(HeroUIManager.Instance.GetHeroLVPayBack(hero.Quality, hero.heroLevel),
        HeroUIManager.Instance.GetHeroBreakPayBack(hero.Quality, hero.breakLevel));
        //已觉醒的需要消耗货币
        if (hero.awakeLevel == 0)
        {
            items = CommonFunc.ChangeToItemList(payBack1);
            ConfirmCancel.ShowItemsConfirm(items, Language.Get("herocard42"), Language.Get("herocard43"), (bool isOk) =>
            {
                if (isOk)
                {
                    //发包
                    SendReborn(hero.itemHero.gridIndex);
                }
            });
        }
        else
        {
            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.rebornAwakeHeroMaxCount - 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, "", payBackMoney, HeroUIManager.Instance.payBackMoneyType);
        }
    }
    void SendReborn(int index)
    {
        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()
    {
@@ -707,7 +657,7 @@
            {
                for (int k = 0; k < config.AttrIDList.Length; k++)
                {
                    awakeStr += PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k],  "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}"))
                    awakeStr += PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k], "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}"))
                    + (k == config.AttrIDList.Length - 1 ? "" : "\n");
                }
            }
@@ -732,4 +682,36 @@
            return;
        fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculatePower());
    }
    void RefreshFreeze()
    {
        //至少需要觉醒到多少级
        int needAwakeLV = HeroUIManager.Instance.GetAwakeLVByStarLV(hero.heroId, hero.heroStarMaxBefore);
        if (hero.awakeLevel < needAwakeLV)
        {
            freezeTipBtn.SetActive(true);
            //星级
            for (int i = 0; i < starImgFreezeList.Count; i++)
            {
                if ((hero.heroStarMaxBefore - 1) % starImgFreezeList.Count >= i)
                {
                    starImgFreezeList[i].SetActive(true);
                    starImgFreezeList[i].SetSprite("herostar" + (((hero.heroStarMaxBefore - 1) / starImgFreezeList.Count) + 1) * starImgFreezeList.Count);
                }
                else
                {
                    starImgFreezeList[i].SetActive(false);
                }
            }
            freezeStarText.text = Language.Get("HeroAwake16", hero.heroStarMaxBefore);
            freezeAawkeLVText.text = Language.Get("HeroAwake17", needAwakeLV);
        }
        else
        {
            freezeTipBtn.SetActive(false);
        }
        freezeTipGo.SetActive(false);
    }
}