using System.Collections.Generic; using System.Linq; using Core.Language; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Bag; using GameLogic.Hero; using UnityEngine; using UnityEngine.UI; using Utility; namespace Fort23.Mono { [UIBinding(prefab = "GongFaDetailsPanel")] public partial class GongFaDetailsPanel : 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 = false; IsShowAppBar = false; isPopUi = true; } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); } public async void CustomInit(ItemInfo itemInfo) { AccountFileInfo.SkillData skillData = new AccountFileInfo.SkillData(); skillData.id = itemInfo.config.associateVlaue[1]; skillData.star = 1; skillData.level = 1; skillData.useIndex = -1; SkillInfo skillInfo = new SkillInfo(skillData); Text_Desc.text = LanguageManager.Instance.Text(itemInfo.config.itemDesc); 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_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) + " Lv." + _skillInfo.SkillPowerupConfig.ID.ToString(); 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); } } 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].IDGroup, _skillInfo.SkillPowerupConfig.ID, configs[i].level); 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(); } public async static CTask Open(ItemInfo skillInfo) { GongFaDetailsPanel gongFaUpgradePanel = await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Top); 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(); } } }