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 Utility; namespace Fort23.Mono { [UIBinding(prefab = "FaBaoDetailsPanel")] public partial class FaBaoDetailsPanel : UIPanel { List faBaoSkillWidgets = new List(); List itemWidgetType1s = new List(); List faBaoWidgets = new List(); FaBaoWidget currentFaBaoWidget = null; FaBaoInfo currentFaBaoInfo; private ItemInfo _itemInfo; private bool isUpGrade = false; private List shownFaBaoInfos; private void Init() { IsShowAppBar = false; isAddStack = false; isPopUi = true; } protected override void AddEvent() { } protected override void DelEvent() { } public override CTask GetFocus() { // AppBarPanel.ClosePanel(); return base.GetFocus(); } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); } public async void CustomInit(ItemInfo itemInfo) { _itemInfo = itemInfo; AccountFileInfo.FaBaoData faaData = new AccountFileInfo.FaBaoData(); faaData.id = itemInfo.config.associateVlaue[1]; faaData.level = 1; faaData.useIndex = -1; FaBaoInfo faBaoInfo = new FaBaoInfo(faaData); currentFaBaoInfo = faBaoInfo; UpdateFaBaoUI(faBaoInfo); } private async CTask UpdateFaBaoUI(FaBaoInfo faBaoInfo) { using (CTaskAwaitBuffer cts = new CTaskAwaitBuffer()) { Text_FaBaoName.text = LanguageManager.Instance.Text(faBaoInfo.FabaoConfig.name) + " Lv." + faBaoInfo.FabaoPowerupConfig.ID; Text_Power.text = $"强度:{faBaoInfo.qiangDu}"; Text_Desc.text = UtilTools.GetString(LanguageManager.Instance.Text(faBaoInfo.SkillConfig.dec), faBaoInfo.effectValue); Text_ItemDesc.text = LanguageManager.Instance.Text(_itemInfo.config.itemDesc); Icon_FaBaoIcon.icon_name = faBaoInfo.SkillConfig.icon; switch (faBaoInfo.FabaoConfig.magicAttribute) { 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; } cts.AddTask(CreatFaBaoSkillWidget(faBaoInfo)); cts.AddTask(CreatFaBaoAttributeWidget(faBaoInfo)); await cts.WaitAll(); } } private async CTask CreatFaBaoSkillWidget(FaBaoInfo faBaoInfo) { foreach (var faBaoSkillWidget in faBaoSkillWidgets) { UIManager.Instance.DormancyGComponent(faBaoSkillWidget); } faBaoSkillWidgets.Clear(); List fabaoPowerupConfigs = ConfigComponent.Instance.GetAll().ToList(); var fanappower = fabaoPowerupConfigs.GroupBy(f => f.SkillLevel).Select(g => new { config = g.OrderBy(f => f.ID).FirstOrDefault() }).ToList(); foreach (var powerupConfigse in fanappower) { AccountFileInfo.FaBaoData faBaoData = new AccountFileInfo.FaBaoData(); faBaoData.id = currentFaBaoInfo.FaBaoData.id; faBaoData.level = powerupConfigse.config.ID; FaBaoInfo _faBaoInfo = new FaBaoInfo(faBaoData); FaBaoSkillWidget faBaoSkillWidget = await UIManager.Instance.CreateGComponent(null, SkillContent); faBaoSkillWidget.CustomInit(currentFaBaoInfo, _faBaoInfo); faBaoSkillWidgets.Add(faBaoSkillWidget); } } private async CTask CreatFaBaoAttributeWidget(FaBaoInfo faBaoInfo) { string t = ""; foreach (var keyValuePair in faBaoInfo.attriButedIC) { t = $"{GetAttributeName(keyValuePair.Key)} : {currentFaBaoInfo.attriButedIC[keyValuePair.Key].ToString()}\n"; } Text_ShuXingJiaCheng.text = t; } private string GetAttributeName(int type) { switch (type) { case 1: return "生命"; case 2: return "防御"; case 3: return "攻击"; } return ""; } public async static CTask OpenPanel(ItemInfo faBaoInfo) { FaBaoDetailsPanel selectFaBaoPanel = await UIManager.Instance.LoadAndOpenPanel(null,UILayer.Top); selectFaBaoPanel.CustomInit(faBaoInfo); return selectFaBaoPanel; } public override void Close() { foreach (var faBaoAttributeWidget in faBaoWidgets) { UIManager.Instance.DormancyGComponent(faBaoAttributeWidget); } faBaoWidgets.Clear(); foreach (var faBaoSkillWidget in faBaoSkillWidgets) { UIManager.Instance.DormancyGComponent(faBaoSkillWidget); } faBaoSkillWidgets.Clear(); UIManager.Instance.DormancyGComponent(currentFaBaoWidget); currentFaBaoWidget = null; currentFaBaoInfo = null; base.Close(); } } }