| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471 | 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_UpGrade.onClick.AddListener(() =>            {                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++)                // {                //     if (!PlayerManager.Instance.BagController.DeductItem(_skillInfo.SkillPowerupConfig.LevelupItem[i],                //             _skillInfo.SkillPowerupConfig.LevelupItemNum[i]))                //     {                //         ItemSourcePanel.OpenPanel(_skillInfo.SkillPowerupConfig.LevelupItem[i]);                //         TipMessagePanel.OpenTipMessagePanel("道具不足!");                //         return;                //     }                // }                _skillInfo.SkillData.level++;                _skillInfo.CustomInt(_skillInfo.SkillData);                CustomInit(_skillInfo);                AccountFileInfo.Instance.SavePlayerData();            });            Btn_UpStar.onClick.AddListener(() =>            {                if (!isUpStar)                {                    isUpStar = true;                    UpdateStarBtn();                    return;                }                if (_skillInfo.SkillData == null)                {                    return;                }                if (_skillInfo.SkillData.star > _gongFaUpgradeInfoWidgets.Count)                {                    TipMessagePanel.OpenTipMessagePanel("已经满星!");                    return;                }                int count = skillConstant.SkillPromoteNeedPieceNum[_skillInfo.skillConfig.level];                if (!PlayerManager.Instance.BagController.DeductItem(_skillInfo.skillConfig.PieceID, count))                {                    ItemSourcePanel.OpenPanel(_skillInfo.skillConfig.PieceID);                    TipMessagePanel.OpenTipMessagePanel("道具不足!");                    return;                }                _skillInfo.SkillData.star++;                _skillInfo.CustomInt(_skillInfo.SkillData);                CustomInit(_skillInfo);                AccountFileInfo.Instance.SavePlayerData();            });        }        public async void CustomInit(SkillInfo skillInfo)        {            foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)            {                UIManager.Instance.DormancyGComponent(gongFaUpgradeInfoWidget);            }            _gongFaUpgradeInfoWidgets.Clear();            _skillInfo = skillInfo;            _skillPowerupConfigs = ConfigComponent.Instance.GetAll<SkillPowerupConfig>().ToList();            SkillConfig skillConfig = _skillInfo.skillConfig;            Icon_GongFaIcon.icon_name = skillConfig.icon;            Text_Level1.text = "Lv." + _skillInfo.SkillPowerupConfig.ID.ToString();            Text_Level.text = "Lv." + _skillInfo.SkillPowerupConfig.ID.ToString();            Text_SkillCd.text = $"加功法盘速度:{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:                    Icon_Attribute.icon_name = "dec_jin2";                    break;                case 2:                    Icon_Attribute.icon_name = "dec_mu2";                    break;                case 4:                    Icon_Attribute.icon_name = "dec_shui2";                    break;                case 8:                    Icon_Attribute.icon_name = "dec_huo2";                    break;                case 16:                    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);                }            }            // for (var i = 0; i < StarRoot.Count; i++)            // {            //     MyImage myImage = StarRoot[i] as MyImage;            //     myImage.gameObject.SetActive(false);            // }            //            // int yinstar = skillInfo.skillConfig.level - 5;            // for (var i = 0; i < StarRoot.Count; i++)            // {            //     MyImage icon = StarRoot[i] as MyImage;            //     if (skillInfo.skillConfig.level > 5)            //     {            //         if (i < yinstar)            //         {            //             icon.icon_name = "dec_star_2";            //             icon.gameObject.SetActive(true);            //         }            //         else            //         {            //             icon.icon_name = "dec_gfxingji";            //             icon.gameObject.SetActive(true);            //         }            //     }            //     else            //     {            //         if (i < skillInfo.skillConfig.level)            //         {            //             icon.icon_name = "dec_gfxingji";            //             icon.gameObject.SetActive(true);            //         }            //     }            // }            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)            {                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] = _skillInfo.effectValue[i].ToString();                        }                        else                        {                            effs[i] =                                $"{_skillInfo.effectValue[i].ToString()}<color=green>→({nextSkillInfo.effectValue[i]})</color>";                        }                    }                    Text_NextLevel.gameObject.SetActive(true);                    Text_NextLevel.text =                        $"{_skillInfo.SkillPowerupConfig.ID}级  →  {nextSkillInfo.SkillPowerupConfig.ID}级";                    Text_GongFaDesc.text =                        UtilTools.GetString(LanguageManager.Instance.Text(_skillInfo.skillConfig.dec), effs);                    Btn_UpStar.gameObject.SetActive(false);                    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_UpGrade.gameObject.transform.Gray(true);                        UpGradeItemRoot.SetActive(false);                    }                    else                    {                        Btn_UpGrade.gameObject.transform.RecoverColor();                        Text_UpGrade.text = "升级";                        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.gameObject.SetActive(true);                    Text_NextLevel.text = $"{_skillInfo.skillConfig.level}级  →  Max级";                    Text_UpGrade.text = "已满级";                    Btn_UpStar.gameObject.SetActive(false);                    UpGradeItemRoot.SetActive(false);                }            }            if (isUpStar)            {                Btn_UpStar.GetComponent<RectTransform>().sizeDelta = new Vector2(481, 80);                foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)                {                    gongFaUpgradeInfoWidget.SelectWidget(true);                }                if (_skillInfo.skillConfig.level < 6)                {                    Btn_UpStar.gameObject.transform.RecoverColor();                    Text_UpStar.text = "领悟";                    Btn_UpGrade.gameObject.SetActive(false);                    UpStarItemRoot.SetActive(true);                    int count = skillConstant.SkillPromoteNeedPieceNum[_skillInfo.skillConfig.level];                    ItemWidgetType1 itemWidgetType1 =                        await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Gam, null,                            UpStarItemRoot.GetComponent<RectTransform>(), isInstance: true);                    itemWidgetType1.CustomInit(_skillInfo.skillConfig.PieceID, count);                    _itemWidgetType1.Add(itemWidgetType1);                    // EnergyWidget energyWidget =                    //     await UIManager.Instance.CreateGComponent<EnergyWidget>(null, EnergyRoot);                    // energyWidget.CustomInit(_skillInfo.skillConfig.PieceID);                    // _energyWidgets.Add(energyWidget);                }                else                {                    Text_UpStar.text = "已满星";                    Btn_UpGrade.gameObject.SetActive(false);                    UpStarItemRoot.SetActive(false);                }            }            if (!isUpGrad && !isUpStar)            {                Btn_UpGrade.GetComponent<RectTransform>().sizeDelta = new Vector2(253, 80);                Btn_UpStar.GetComponent<RectTransform>().sizeDelta = new Vector2(253, 80);                                Btn_UpGrade.gameObject.SetActive(true);                Btn_UpStar.gameObject.SetActive(true);                UpStarItemRoot.SetActive(false);                UpGradeItemRoot.SetActive(false);                Text_UpStar.text = "领悟";                Text_UpGrade.text = "升级";                Btn_UpGrade.gameObject.transform.RecoverColor();                foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)                {                    gongFaUpgradeInfoWidget.SelectWidget(false);                }                Text_NextLevel.gameObject.SetActive(false);                Text_GongFaDesc.text = UtilTools.GetString(LanguageManager.Instance.Text(_skillInfo.skillConfig.dec),                    _skillInfo.effectValue);            }            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 override void 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();            _itemWidgetType1.Clear();            _gongFaUpgradeInfoWidgets.Clear();            isUpStar = false;            isUpGrad = false;            _skillInfo = null;            base.Close();        }    }}
 |