using System.Collections.Generic; using Animancer; using Core.Language; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Hero; using UnityEngine; using UnityEngine.UI; using Utility; namespace Fort23.Mono { [UIBinding(prefab = "BossInfoPanel")] public partial class BossInfoPanel : UIPanel { private bool isOk; private void Init() { isAddStack = false; } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); Btn_Ok.onClick.AddListener(() => { isOk = true; UIManager.Instance.HideUIUIPanel(this); }); } private CTask result; List _skillWidgets = new List(); List _faBaoWidgets = new List(); public async override CTask AsyncInit(object[] uiData) { await CustomInit((int)uiData[0], uiData[1] as CTask); return await base.AsyncInit(uiData); } public async CTask CustomInit(int levebattleId, CTask result) { this.result = result; LevelbattleConfig levelbattleConfig = ConfigComponent.Instance.Get(levebattleId); GroupConfig groupConfig = ConfigComponent.Instance.Get(levelbattleConfig.Group[0]); HeroModelConfig heroModelConfig = ConfigComponent.Instance.Get(groupConfig.GroupMonster[0]); MonsterPowerUpConfig heroPowerUpConfig = ConfigComponent.Instance.Get(PlayerManager.Instance.myHero.level.Value); CombatHeroInfo combatHeroInfo = new CombatHeroInfo(); combatHeroInfo.InitMonster(heroModelConfig.ID, heroPowerUpConfig.ID); Text_Name.text = "名称:" + LanguageManager.Instance.Text(combatHeroInfo.modelConfig.name); Text_Jingjie.text = "境界:" + LanguageManager.Instance.Text(heroPowerUpConfig.jingjie1) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjie2) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjie3); using (CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer()) { for (var i = 0; i < combatHeroInfo.modelConfig.fa_bao_id.Length; i++) { if (combatHeroInfo.modelConfig.fa_bao_id[i] != -1) { int index = i; cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent((faBaoWidget) => { faBaoWidget.CustomInit(new FaBaoInfo(combatHeroInfo.modelConfig.fa_bao_id[index], heroPowerUpConfig.FabaoLv, 1), false); faBaoWidget.OnClick = FaBaoWidgetOnClick; _faBaoWidgets.Add(faBaoWidget); }, FabaoRoot)); // FaBaoWidget faBaoWidget = await UIManager.Instance.CreateGComponent(null, FabaoRoot); // faBaoWidget.CustomInit(new FaBaoInfo(heroModelConfig.fa_bao_id[i], heroPowerUpConfig.FabaoLv, 1), false); // faBaoWidget.OnClick = FaBaoWidgetOnClick; // _faBaoWidgets.Add(faBaoWidget); } } for (var i = 0; i < combatHeroInfo.modelConfig.skillID.Length; i++) { if (combatHeroInfo.modelConfig.skillID[i] != -1) { int index = i; cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent((skillWidget) => { skillWidget.InitSkillWidget(new SkillInfo(combatHeroInfo.modelConfig.skillID[index] * 10 + heroPowerUpConfig.GongfaStar - 1, heroPowerUpConfig.GongfaLv)); skillWidget.OnClick = SkillWidgetOnClick; _skillWidgets.Add(skillWidget); }, GongfaRoot)); // SkillWidget skillWidget = await UIManager.Instance.CreateGComponent(null, GongfaRoot); } } await cTaskAwaitBuffer.WaitAll(); } Text_Linggen.text = $"金:{combatHeroInfo.Metal_Injury} 木:{combatHeroInfo.Wood_Injury} 水:{combatHeroInfo.Water_Injury} 火:{combatHeroInfo.Fire_Injury} 土:{combatHeroInfo.Earth_Injury}"; LayoutRebuilder.ForceRebuildLayoutImmediate(GongfaRoot); LayoutRebuilder.ForceRebuildLayoutImmediate(FabaoRoot); LayoutRebuilder.ForceRebuildLayoutImmediate(FabaoRoot.parent.GetComponent()); } private void FaBaoWidgetOnClick(ItemWidgetBasic obj) { FaBaoWidget faBaoWidget = obj as FaBaoWidget; SkillMassgePanel.OpenSkillSelectPanel(LanguageManager.Instance.Text(faBaoWidget.faoInfo.SkillConfig.name), UtilTools.GetString(LanguageManager.Instance.Text(faBaoWidget.faoInfo.SkillConfig.dec), faBaoWidget.faoInfo.SkillConfig.effectValue)); } private void SkillWidgetOnClick(ItemWidgetBasic obj) { SkillWidget skillWidget = obj as SkillWidget; SkillMassgePanel.OpenSkillSelectPanel(LanguageManager.Instance.Text(skillWidget.skillConfigId.skillConfig.name), UtilTools.GetString(LanguageManager.Instance.Text(skillWidget.skillConfigId.skillConfig.dec), skillWidget.skillConfigId.skillConfig.effectValue)); } public override void Close() { foreach (var faBaoWidget in _faBaoWidgets) { UIManager.Instance.DormancyGComponent(faBaoWidget); } _faBaoWidgets.Clear(); foreach (var faBaoWidget in _skillWidgets) { UIManager.Instance.DormancyGComponent(faBaoWidget); } _skillWidgets.Clear(); result?.SetResult(isOk); base.Close(); } public async static CTask OpenPanel(int levebattleId) { CTask result = CTask.Create(); BossInfoPanel bossInfoPanel = await UIManager.Instance.LoadAndOpenPanel(null, uiData: new object[] { levebattleId, result }); // bossInfoPanel.CustomInit(levebattleId, result); return await result; } } }