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 configs; List _gongFaUpgradeInfoWidgets = new List(); private List _skillPowerupConfigs; private SkillConstant skillConstant; List _itemWidgetType1 = new List(); List _energyWidgets = new List(); bool isUpStar = false; bool isUpGrad = false; private void Init() { isAddStack = true; IsShowAppBar = false; } 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(); }); 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(_skillInfo.SkillPowerupConfig.PlayerLevelLimit); TipMessagePanel.OpenTipMessagePanel($"需境界达到{LanguageManager.Instance.Text(heroPowerUpConfig.jingjie1) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjie2) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjie3)}"); return; } for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++) { if (!PlayerManager.Instance.BagController.IsEnough(_skillInfo.SkillPowerupConfig.LevelupItem[i], _skillInfo.SkillPowerupConfig.LevelupItemNum[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])) { 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)) { 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().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.cd}转"; skillConstant = ConfigComponent.Instance.Get(1); UpdateStarBtn(); Text_GongFaDesc.text = UtilTools.GetString(LanguageManager.Instance.Text(skillConfig.dec), _skillInfo.effectValue); Text_GongFaName.text = LanguageManager.Instance.Text(skillConfig.name); switch (skillConfig.attribute) { case 1: Icon_Attribute.icon_name = "dec_jin"; break; case 2: Icon_Attribute.icon_name = "dec_mu"; break; case 4: Icon_Attribute.icon_name = "dec_shui"; break; case 8: Icon_Attribute.icon_name = "dec_huo"; break; case 16: Icon_Attribute.icon_name = "dec_tu"; 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 allSkillConfigs = ConfigComponent.Instance.GetAll().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].ID, _skillInfo.SkillPowerupConfig.ID); GongFaUpgradeInfoWidget gongFaUpgradeInfoWidget = await UIManager.Instance.CreateGComponent(null, Content); gongFaUpgradeInfoWidget.CustomInit(_skillInfo, skillInfo1); _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) { Btn_UpStar.gameObject.SetActive(false); if (PlayerManager.Instance.myHero.level.Value < _skillInfo.SkillPowerupConfig.PlayerLevelLimit) { HeroPowerUpConfig heroPowerUpConfig = ConfigComponent.Instance.Get(_skillInfo.SkillPowerupConfig.PlayerLevelLimit); Text_UpGrade.text = $"需境界达到{LanguageManager.Instance.Text(heroPowerUpConfig.jingjie1) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjie2) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjie3)}"; 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(ItemWidgetType1Gam, null, UpGradeItemRoot.GetComponent(), isInstance: true); itemWidgetType1.CustomInit(_skillInfo.SkillPowerupConfig.LevelupItem[i], _skillInfo.SkillPowerupConfig.LevelupItemNum[i]); _itemWidgetType1.Add(itemWidgetType1); EnergyWidget energyWidget = await UIManager.Instance.CreateGComponent(null, EnergyRoot); energyWidget.CustomInit(_skillInfo.SkillPowerupConfig.LevelupItem[i]); _energyWidgets.Add(energyWidget); } } } else { Text_UpGrade.text = "已满级"; Btn_UpStar.gameObject.SetActive(true); UpGradeItemRoot.SetActive(false); } } if (isUpStar) { 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(ItemWidgetType1Gam, null, UpStarItemRoot.GetComponent(), isInstance: true); itemWidgetType1.CustomInit(_skillInfo.skillConfig.PieceID, count); _itemWidgetType1.Add(itemWidgetType1); EnergyWidget energyWidget = await UIManager.Instance.CreateGComponent(null, EnergyRoot); energyWidget.CustomInit(_skillInfo.skillConfig.PieceID); _energyWidgets.Add(energyWidget); } else { Text_UpStar.text = "已满星"; Btn_UpGrade.gameObject.SetActive(true); UpStarItemRoot.SetActive(false); } } if (!isUpGrad && !isUpStar) { 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(); } LayoutRebuilder.ForceRebuildLayoutImmediate(UpStarItemRoot.GetComponent()); LayoutRebuilder.ForceRebuildLayoutImmediate(UpGradeItemRoot.GetComponent()); LayoutRebuilder.ForceRebuildLayoutImmediate(Text_UpStar.GetComponent()); LayoutRebuilder.ForceRebuildLayoutImmediate(Text_UpGrade.GetComponent()); LayoutRebuilder.ForceRebuildLayoutImmediate(UpGradeItemRoot.transform.parent.GetComponent()); LayoutRebuilder.ForceRebuildLayoutImmediate(UpStarItemRoot.transform.parent.GetComponent()); LayoutRebuilder.ForceRebuildLayoutImmediate(Btn_UpGrade.GetComponent()); } public async static CTask Open(SkillInfo skillInfo) { GongFaUpgradePanel gongFaUpgradePanel = await UIManager.Instance.LoadAndOpenPanel(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(); } } }