| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512 | using System;using System.Collections.Generic;using System.Linq;using Core.Language;using Excel2Json;using Fort23.Core;using Fort23.UTool;using GameLogic.Hero;using GameLogic.Player;using UnityEngine;using UnityEngine.UI;using Utility;namespace Fort23.Mono{    [UIBinding(prefab = "GongFaUpgradePanel")]    public partial class GongFaUpgradePanel : UIPanel    {        private SkillInfo _skillInfo;        private List<SkillConfig> configs;        List<GongFaUpgradeInfoWidget> _gongFaUpgradeInfoWidgets = new List<GongFaUpgradeInfoWidget>();        private List<SkillPowerupConfig> _skillPowerupConfigs;        // private SkillConstant skillConstant;        List<ItemWidgetType1> _itemWidgetType1 = new List<ItemWidgetType1>();        // List<EnergyWidget> _energyWidgets = new List<EnergyWidget>();        bool isUpStar = false;        bool isUpGrad = false;        private void Init()        {            isAddStack = true;            IsShowAppBar = false;        }        public async override CTask GetFocus()        {            // await AppBarPanel.OpenPanel(this);            base.GetFocus();        }        protected override void AddEvent()        {        }        protected override void DelEvent()        {        }        public override void AddButtonEvent()        {            Btn_Back.onClick.AddListener(() =>            {                if (isUpStar || isUpGrad)                {                    isUpStar = false;                    isUpGrad = false;                    UpdateStarBtn();                    return;                }                UIManager.Instance.HideUIUIPanel<GongFaUpgradePanel>();            });            Btn_UpGradeOk.onClick.AddListener(() => { UpgradeClick(); });            Btn_UpGrade.onClick.AddListener(() => { UpgradeClick(); });            Btn_UpStar.onClick.AddListener(() => { UpStarClick(); });            Btn_UpStarOk.onClick.AddListener(() => { UpStarClick(); });        }        private void UpStarClick()        {            if (!isUpStar)            {                isUpStar = true;                UpdateStarBtn();                return;            }            if (_skillInfo.SkillData == null)            {                return;            }            if (_skillInfo.SkillData.star > _gongFaUpgradeInfoWidgets.Count)            {                TipMessagePanel.OpenTipMessagePanel("已经满星!");                return;            }            ItemConfig itemConfig = ConfigComponent.Instance.Get<ItemConfig>(_skillInfo.skillConfig.PieceID);            SkillConstant skillConstant = ConfigComponent.Instance.Get<SkillConstant>(itemConfig.quality);            int count = skillConstant.SkillPromoteNeedPieceNum[_skillInfo.skillConfig.level - 1];            if (!PlayerManager.Instance.BagController.DeductItem(_skillInfo.skillConfig.PieceID, count))            {                ItemSourcePanel.OpenPanel(_skillInfo.skillConfig.PieceID);                TipMessagePanel.OpenTipMessagePanel("道具不足!");                return;            }            _skillInfo.SkillData.star++;            _skillInfo.CustomInt(_skillInfo.SkillData);            PlayerManager.Instance.myHero.ComputeHeroInfo();            CustomInit(_skillInfo);            foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)            {                if (gongFaUpgradeInfoWidget._skillInfo.skillConfig.level == _skillInfo.skillConfig.level)                {                    gongFaUpgradeInfoWidget.fx_ui_gongfa_tiaomu.gameObject.SetActive(true);                    gongFaUpgradeInfoWidget.fx_ui_gongfa_tiaomu.Play();                    break;                }            }            AccountFileInfo.Instance.SavePlayerData();        }        private void UpgradeClick()        {            if (_skillInfo.SkillData == null)            {                return;            }            if (!isUpGrad)            {                isUpGrad = true;                UpdateStarBtn();                return;            }            if (_skillInfo.SkillData.level >= _skillPowerupConfigs.Count)            {                TipMessagePanel.OpenTipMessagePanel("已经满级!");                return;            }            if (PlayerManager.Instance.myHero.level.Value < _skillInfo.SkillPowerupConfig.PlayerLevelLimit)            {                HeroPowerUpConfig heroPowerUpConfig =                    ConfigComponent.Instance.Get<HeroPowerUpConfig>(_skillInfo.SkillPowerupConfig.PlayerLevelLimit);                TipMessagePanel.OpenTipMessagePanel(                    $"需境界达到{LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[0]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[1]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2])}");                return;            }            for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++)            {                if (!PlayerManager.Instance.BagController.IsEnough(_skillInfo.SkillPowerupConfig.LevelupItem[i],                        _skillInfo.SkillPowerupConfig.LevelupItemNum[i]))                {                    ItemSourcePanel.OpenPanel(_skillInfo.SkillPowerupConfig.LevelupItem[i]);                    TipMessagePanel.OpenTipMessagePanel("道具不足!");                    return;                }            }            //扣除道具            for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++)            {                PlayerManager.Instance.BagController.DeductItem(_skillInfo.SkillPowerupConfig.LevelupItem[i],                    _skillInfo.SkillPowerupConfig.LevelupItemNum[i]);            }            fx_ui_gongfa_shengji.gameObject.SetActive(true);            fx_ui_gongfa_shengji.Play();            _skillInfo.SkillData.level++;            _skillInfo.CustomInt(_skillInfo.SkillData);            PlayerManager.Instance.myHero.ComputeHeroInfo();            CustomInit(_skillInfo);            AccountFileInfo.Instance.SavePlayerData();        }        public async void CustomInit(SkillInfo skillInfo)        {            foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)            {                UIManager.Instance.DormancyGComponent(gongFaUpgradeInfoWidget);            }            _gongFaUpgradeInfoWidgets.Clear();            _skillInfo = skillInfo;            RedDotComType01.CustomInit(2, _skillInfo);            _skillPowerupConfigs = ConfigComponent.Instance.GetAll<SkillPowerupConfig>().ToList();            SkillConfig skillConfig = _skillInfo.skillConfig;            Icon_GongFaIcon.icon_name = skillConfig.icon;            Text_Level1.text = LanguageManager.Instance.Text(10222, _skillInfo.SkillPowerupConfig.ID.ToString());            Text_Level.text = LanguageManager.Instance.Text(10222, _skillInfo.SkillPowerupConfig.ID.ToString());            Text_SkillCd.text = LanguageManager.Instance.Text(10208, skillConfig.addcd);            // skillConstant = ConfigComponent.Instance.Get<SkillConstant>(1);            UpdateStarBtn();            // Text_GongFaDesc.text =            //     UtilTools.GetString(LanguageManager.Instance.Text(skillConfig.dec), _skillInfo.effectValue);            Text_GongFaName.text = LanguageManager.Instance.Text(skillConfig.name) + " ";            LayoutRebuilder.ForceRebuildLayoutImmediate(Text_GongFaName.GetComponent<RectTransform>());            LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Level.GetComponent<RectTransform>());            LayoutRebuilder.ForceRebuildLayoutImmediate(Text_GongFaName.transform.parent.GetComponent<RectTransform>());            switch (skillConfig.attribute)            {                case 1:                    csc.ChangeState(0);                    Icon_Attribute.icon_name = "dec_jin2";                    break;                case 2:                    csc.ChangeState(1);                    Icon_Attribute.icon_name = "dec_mu2";                    break;                case 4:                    csc.ChangeState(2);                    Icon_Attribute.icon_name = "dec_shui2";                    break;                case 8:                    csc.ChangeState(3);                    Icon_Attribute.icon_name = "dec_huo2";                    break;                case 16:                    csc.ChangeState(4);                    Icon_Attribute.icon_name = "dec_tu2";                    break;            }            for (var i = 0; i < StarRoot.Count; i++)            {                MyImage icon = StarRoot[i] as MyImage;                if (i < skillInfo.skillConfig.level - 1)                {                    icon.gameObject.SetActive(true);                }                else                {                    icon.gameObject.SetActive(false);                }            }            List<SkillConfig> allSkillConfigs = ConfigComponent.Instance.GetAll<SkillConfig>().ToList();            configs = allSkillConfigs.Where(s => s.IDGroup == skillConfig.IDGroup).ToList();            for (var i = 0; i < configs.Count; i++)            {                if (configs[i].level == 1)                    continue;                SkillInfo skillInfo1 =                    new SkillInfo(configs[i].IDGroup, _skillInfo.SkillPowerupConfig.ID, configs[i].level);                GongFaUpgradeInfoWidget gongFaUpgradeInfoWidget =                    await UIManager.Instance.CreateGComponent<GongFaUpgradeInfoWidget>(null, Content);                gongFaUpgradeInfoWidget.CustomInit(_skillInfo, skillInfo1, false);                _gongFaUpgradeInfoWidgets.Add(gongFaUpgradeInfoWidget);            }        }        private async CTask UpdateStarBtn()        {            foreach (var itemWidgetType1 in _itemWidgetType1)            {                UIManager.Instance.DormancyGComponent(itemWidgetType1);            }            _itemWidgetType1.Clear();            // foreach (var energyWidget in _energyWidgets)            // {            //     UIManager.Instance.DormancyGComponent(energyWidget);            // }            //            // _energyWidgets.Clear();            if (isUpGrad)            {                Btn_UpStar.gameObject.SetActive(false);                Btn_UpGrade.gameObject.SetActive(false);                Btn_UpStarOk.gameObject.SetActive(false);                Btn_UpGradeOk.gameObject.SetActive(true);                if (_skillInfo.SkillData.level < _skillPowerupConfigs.Count)                {                    AccountFileInfo.SkillData skillData = new AccountFileInfo.SkillData();                    skillData.id = _skillInfo.SkillData.id;                    skillData.level = _skillInfo.SkillData.level + 1;                    skillData.star = _skillInfo.SkillData.star;                    SkillInfo nextSkillInfo = new SkillInfo(skillData);                    string[] effs = new string[_skillInfo.effectValue.Length];                    for (var i = 0; i < _skillInfo.effectValue.Length; i++)                    {                        if (_skillInfo.effectValue[i] == nextSkillInfo.effectValue[i])                        {                            effs[i] = FormatNumber(_skillInfo.effectValue[i]);                        }                        else                        {                            effs[i] =                                $"{FormatNumber(_skillInfo.effectValue[i])}<color=green>→({FormatNumber(nextSkillInfo.effectValue[i])})</color>";                        }                    }                    Text_NextLevel.transform.parent.gameObject.SetActive(true);                    Text_NextLevel.text = LanguageManager.Instance.Text(10221, _skillInfo.SkillPowerupConfig.ID,                        nextSkillInfo.SkillPowerupConfig.ID);                    LayoutRebuilder.ForceRebuildLayoutImmediate(Text_NextLevel.GetComponent<RectTransform>());                    LayoutRebuilder.ForceRebuildLayoutImmediate(Text_NextLevel.transform.parent                        .GetComponent<RectTransform>());                    Text_GongFaDesc.text =                        UtilTools.GetString(LanguageManager.Instance.Text(_skillInfo.skillConfig.dec), effs);                    // Btn_UpGrade.GetComponent<RectTransform>().sizeDelta = new Vector2(481, 80);                    if (PlayerManager.Instance.myHero.level.Value < _skillInfo.SkillPowerupConfig.PlayerLevelLimit)                    {                        HeroPowerUpConfig heroPowerUpConfig =                            ConfigComponent.Instance.Get<HeroPowerUpConfig>(_skillInfo.SkillPowerupConfig                                .PlayerLevelLimit);                        Text_UpGrade.text =                            $"需境界达到{LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[0]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[1]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2])}";                        Btn_UpGradeOk.gameObject.transform.Gray(true);                        UpGradeItemRoot.SetActive(false);                    }                    else                    {                        Btn_UpGradeOk.gameObject.transform.RecoverColor();                        Text_UpGrade.text = LanguageManager.Instance.Text(10220);                        UpGradeItemRoot.SetActive(true);                        for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++)                        {                            ItemWidgetType1 itemWidgetType1 =                                await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Gam,                                    null, UpGradeItemRoot.GetComponent<RectTransform>(), isInstance: true);                            itemWidgetType1.CustomInit(_skillInfo.SkillPowerupConfig.LevelupItem[i],                                _skillInfo.SkillPowerupConfig.LevelupItemNum[i]);                            _itemWidgetType1.Add(itemWidgetType1);                            // EnergyWidget energyWidget =                            //     await UIManager.Instance.CreateGComponent<EnergyWidget>(null, EnergyRoot);                            // energyWidget.CustomInit(_skillInfo.SkillPowerupConfig.LevelupItem[i]);                            // _energyWidgets.Add(energyWidget);                        }                        // Text_GongFaDesc.text = UtilTools.GetString(LanguageManager.Instance.Text(_skillInfo.skillConfig.dec), _skillInfo.effectValue);                    }                }                else                {                    Text_NextLevel.transform.parent.gameObject.SetActive(true);                    Text_NextLevel.text = LanguageManager.Instance.Text(10221, _skillInfo.skillConfig.level,                        "Max");                    Text_UpGrade.text = LanguageManager.Instance.Text(10264);                    // Btn_UpStarOk.gameObject.SetActive(false);                    UpGradeItemRoot.SetActive(false);                }            }            if (isUpStar)            {                foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)                {                    gongFaUpgradeInfoWidget.SelectWidget(true);                }                Btn_UpStar.gameObject.SetActive(false);                Btn_UpGrade.gameObject.SetActive(false);                Btn_UpGradeOk.gameObject.SetActive(false);                Btn_UpStarOk.gameObject.SetActive(true);                if (_skillInfo.skillConfig.level < 6)                {                    Btn_UpStarOk.gameObject.transform.RecoverColor();                    Text_UpStar.text = LanguageManager.Instance.Text(10219);                    UpStarItemRoot.SetActive(true);                    ItemConfig itemConfig = ConfigComponent.Instance.Get<ItemConfig>(_skillInfo.skillConfig.PieceID);                    SkillConstant skillConstant = ConfigComponent.Instance.Get<SkillConstant>(itemConfig.quality);                    int count = skillConstant.SkillPromoteNeedPieceNum[_skillInfo.skillConfig.level - 1];                    ItemWidgetType1 itemWidgetType1 =                        await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Gam, null,                            UpStarItemRoot.GetComponent<RectTransform>(), isInstance: true);                    itemWidgetType1.CustomInit(_skillInfo.skillConfig.PieceID, count);                    _itemWidgetType1.Add(itemWidgetType1);                }                else                {                    Btn_UpStarOk.transform.Gray(true);                    Text_UpStar.text = LanguageManager.Instance.Text(10265);                    // Btn_UpStarOk.gameObject.SetActive(false);                    UpStarItemRoot.SetActive(false);                }            }            if (!isUpGrad && !isUpStar)            {                Btn_UpGrade.gameObject.SetActive(true);                Btn_UpStar.gameObject.SetActive(true);                Btn_UpGradeOk.gameObject.SetActive(false);                Btn_UpStarOk.gameObject.SetActive(false);                UpStarItemRoot.SetActive(false);                UpGradeItemRoot.SetActive(false);                Text_UpStar.text = LanguageManager.Instance.Text(10219);                Text_UpGrade.text = LanguageManager.Instance.Text(10220);                Btn_UpGradeOk.gameObject.transform.RecoverColor();                foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)                {                    gongFaUpgradeInfoWidget.SelectWidget(false);                }                Text_NextLevel.transform.parent.gameObject.SetActive(false);                string[] effs = new string[_skillInfo.effectValue.Length];                for (var i = 0; i < _skillInfo.effectValue.Length; i++)                {                    effs[i] = FormatNumber(_skillInfo.effectValue[i]);                }                Text_GongFaDesc.text = UtilTools.GetString(LanguageManager.Instance.Text(_skillInfo.skillConfig.dec),                    effs);            }            LayoutRebuilder.ForceRebuildLayoutImmediate(UpStarItemRoot.GetComponent<RectTransform>());            LayoutRebuilder.ForceRebuildLayoutImmediate(UpGradeItemRoot.GetComponent<RectTransform>());            LayoutRebuilder.ForceRebuildLayoutImmediate(Text_UpStar.GetComponent<RectTransform>());            LayoutRebuilder.ForceRebuildLayoutImmediate(Text_UpGrade.GetComponent<RectTransform>());            LayoutRebuilder.ForceRebuildLayoutImmediate(UpGradeItemRoot.transform.parent.GetComponent<RectTransform>());            LayoutRebuilder.ForceRebuildLayoutImmediate(UpStarItemRoot.transform.parent.GetComponent<RectTransform>());            LayoutRebuilder.ForceRebuildLayoutImmediate(Btn_UpGrade.GetComponent<RectTransform>());        }        public async static CTask<GongFaUpgradePanel> Open(SkillInfo skillInfo)        {            GongFaUpgradePanel gongFaUpgradePanel = await UIManager.Instance.LoadAndOpenPanel<GongFaUpgradePanel>(null);            gongFaUpgradePanel.CustomInit(skillInfo);            return gongFaUpgradePanel;        }        public async override CTask Close()        {            foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)            {                UIManager.Instance.DormancyGComponent(gongFaUpgradeInfoWidget);            }            foreach (var itemWidgetType1 in _itemWidgetType1)            {                UIManager.Instance.DormancyGComponent(itemWidgetType1);            }            //            // foreach (var energyWidget in _energyWidgets)            // {            //     UIManager.Instance.DormancyGComponent(energyWidget);            // }            //            // _energyWidgets.Clear();            fx_ui_gongfa_shengji.gameObject.SetActive(false);            _itemWidgetType1.Clear();            _gongFaUpgradeInfoWidgets.Clear();            isUpStar = false;            isUpGrad = false;            _skillInfo = null;            await base.Close();        }        public static string FormatNumber(double number)        {            const double tolerance = 1e-10;            // 判断是否接近整数            if (Math.Abs(number - Math.Round(number)) < tolerance)            {                return Math.Round(number).ToString();            }            double integerPart = Math.Truncate(number);            double fraction = number - integerPart;            // 检查小数部分是否超过一位            double firstDigit = Math.Truncate(fraction * 10);            double remainder = fraction * 10 - firstDigit;            if (Math.Abs(remainder) > tolerance)            {                return Math.Round(number, 1).ToString("0.0");            }            else            {                return integerPart.ToString();            }        }    }}
 |