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 LevelbattleConfig levelbattleConfig; private GroupConfig groupConfig; private HeroModelConfig heroModelConfig; private MonsterPowerUpConfig heroPowerUpConfig; private CombatHeroInfo combatHeroInfo; 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); }); Btn_Cancel.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); Btn_Player.onClick.AddListener(() => { UpdateInfo(1); }); Btn_Boss.onClick.AddListener(() => { UpdateInfo(2); }); } private CTask result; //List _skillWidgets = new List(); List gongFaWidgetType2s = 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 = ConfigComponent.Instance.Get(levebattleId); groupConfig = ConfigComponent.Instance.Get(levelbattleConfig.Group[0]); heroModelConfig = ConfigComponent.Instance.Get(groupConfig.GroupMonster[0]); heroPowerUpConfig = ConfigComponent.Instance.Get(PlayerManager.Instance.myHero.level.Value); combatHeroInfo = new CombatHeroInfo(); combatHeroInfo.InitMonster(heroModelConfig.ID, heroPowerUpConfig.ID); UpdateInfo(2); } public async void UpdateInfo(int type) { foreach (var gongFaWidgetType2 in gongFaWidgetType2s) { UIManager.Instance.DormancyGComponent(gongFaWidgetType2); } gongFaWidgetType2s.Clear(); if (type == 1) { Text_Name.text = "名称:" + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.modelConfig.name); Text_Jingjie.text = "境界:" + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjie1) + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjie2) + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjie3); Text_Linggen.text = $"金:{PlayerManager.Instance.myHero.Metal_Injury} 木:{PlayerManager.Instance.myHero.Wood_Injury} 水:{PlayerManager.Instance.myHero.Water_Injury} 火:{PlayerManager.Instance.myHero.Fire_Injury} 土:{PlayerManager.Instance.myHero.Earth_Injury}"; Text_Hp.text = PlayerManager.Instance.myHero.hp.Value.ToString(); using (CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer()) { foreach (var faBaoInfo in PlayerManager.Instance.FaBaoControl.FightFaBao) { if (faBaoInfo == null) continue; FaBaoInfo f = faBaoInfo; cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent((faBaoWidget) => { faBaoWidget.CustomInit(f); faBaoWidget.OnClick = FaBaoWidgetOnClick; gongFaWidgetType2s.Add(faBaoWidget); }, FabaoRoot)); } foreach (var skillInfo in PlayerManager.Instance.GongFaControl.allUseSkill) { if (skillInfo == null) continue; SkillInfo s = skillInfo; cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent((skillWidget) => { skillWidget.CustomInit(s); skillWidget.OnClick = FaBaoWidgetOnClick; gongFaWidgetType2s.Add(skillWidget); }, GongfaRoot)); } await cTaskAwaitBuffer.WaitAll(); } } else { 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)); faBaoWidget.OnClick = FaBaoWidgetOnClick; gongFaWidgetType2s.Add(faBaoWidget); }, FabaoRoot)); } } 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.CustomInit(new SkillInfo(combatHeroInfo.modelConfig.skillID[index], heroPowerUpConfig.GongfaLv, heroPowerUpConfig.GongfaStar)); skillWidget.OnClick = FaBaoWidgetOnClick; gongFaWidgetType2s.Add(skillWidget); }, GongfaRoot)); } } await cTaskAwaitBuffer.WaitAll(); } Text_Linggen.text = $"金:{combatHeroInfo.Metal_Injury} 木:{combatHeroInfo.Wood_Injury} 水:{combatHeroInfo.Water_Injury} 火:{combatHeroInfo.Fire_Injury} 土:{combatHeroInfo.Earth_Injury}"; Text_Hp.text = combatHeroInfo.hp.Value.ToString(); } } private void FaBaoWidgetOnClick(ItemWidgetBasic obj) { GongFaWidgetType2 faBaoWidget = obj as GongFaWidgetType2; if (faBaoWidget.faBaoInfo != null) { SkillInfopanel.OpenPanle(faBaoWidget.faBaoInfo); } else if (faBaoWidget.skillInfo != null) { SkillInfopanel.OpenPanle(faBaoWidget.skillInfo); } //SkillMassgePanel.OpenSkillSelectPanel(LanguageManager.Instance.Text(faBaoWidget.faoInfo.SkillConfig.name), UtilTools.GetString(LanguageManager.Instance.Text(faBaoWidget.faoInfo.SkillConfig.dec), faBaoWidget.faoInfo.SkillConfig.effectValue)); } public override void Close() { foreach (var faBaoWidget in gongFaWidgetType2s) { UIManager.Instance.DormancyGComponent(faBaoWidget); } gongFaWidgetType2s.Clear(); result?.SetResult(isOk); base.Close(); } public async static CTask OpenPanel(int levebattleId) { CTask result = CTask.Create(); BossInfoPanel bossInfoPanel = await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Top, uiData: new object[] { levebattleId, result }); // bossInfoPanel.CustomInit(levebattleId, result); return await result; } } }