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; List BossInfoHeadWidgets = new List(); // 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]); foreach (var i in groupConfig.GroupMonster) { HeroModelConfig heroModelConfig = ConfigComponent.Instance.Get(i); MonsterPowerUpConfig heroPowerUpConfig = ConfigComponent.Instance.Get(PlayerManager.Instance.myHero.level.Value); CombatHeroInfo combatHeroInfo = new CombatHeroInfo(); combatHeroInfo.InitMonster(heroModelConfig.ID, heroPowerUpConfig.ID); BossInfoHeadWidget bossInfoHeadWidget = await UIManager.Instance.CreateGComponent(null,BossInfoHeadRoot); bossInfoHeadWidget.CustomInit(combatHeroInfo); bossInfoHeadWidget.OnClick = OnClick; BossInfoHeadWidgets.Add(bossInfoHeadWidget); } // heroModelConfig = ConfigComponent.Instance.Get(groupConfig.GroupMonster[0]); // heroPowerUpConfig = ConfigComponent.Instance.Get(PlayerManager.Instance.myHero.level.Value); // // CombatHeroInfo combatHeroInfo = new CombatHeroInfo(); // combatHeroInfo.InitMonster(heroModelConfig.ID, heroPowerUpConfig.ID); BossInfoHeadWidgets[0].OnPointerClick(); // UpdateInfo(2,BossInfoHeadWidgets[0]); } private void OnClick(ItemWidgetBasic obj) { BossInfoHeadWidget bossInfoHeadWidget = obj as BossInfoHeadWidget; UpdateInfo(2,bossInfoHeadWidget._combatHero); Icon_Select.transform.SetParent(bossInfoHeadWidget.transform); Icon_Select.transform.SetAsFirstSibling(); Icon_Select.GetComponent().anchoredPosition = new Vector2(0, 0); } public async void UpdateInfo(int type, CombatHeroInfo combatHeroInfo = null) { foreach (var gongFaWidgetType2 in gongFaWidgetType2s) { UIManager.Instance.DormancyGComponent(gongFaWidgetType2); } gongFaWidgetType2s.Clear(); if (type == 1) { Icon_Select.transform.SetParent(Btn_Player.transform); Icon_Select.transform.SetAsFirstSibling(); Icon_Select.GetComponent().anchoredPosition = new Vector2(0, 0); Text_Name.text = "名称:" + LanguageManager.Instance.Text(PlayerManager.Instance.PlayerName); Text_Jingjie.text = "境界:" + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjieLanIDs[0]) + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjieLanIDs[1]) + LanguageManager.Instance.Text(PlayerManager.Instance.myHero.powerUpConfig.jingjieLanIDs[2]); Text_Linggen.text = $"金:{PlayerManager.Instance.myHero.Metal} 木:{PlayerManager.Instance.myHero.Wood} 水:{PlayerManager.Instance.myHero.Water} 火:{PlayerManager.Instance.myHero.Fire} 土:{PlayerManager.Instance.myHero.Earth}"; 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 { // Icon_Select.transform.SetParent(Btn_Boss.transform); // Icon_Select.transform.SetAsFirstSibling(); Text_Name.text = "名称:" + LanguageManager.Instance.Text(combatHeroInfo.modelConfig.name); Text_Jingjie.text = "境界:" + LanguageManager.Instance.Text(combatHeroInfo.MonsterPowerUpConfig.jingjie1) + LanguageManager.Instance.Text(combatHeroInfo.MonsterPowerUpConfig.jingjie2) + LanguageManager.Instance.Text(combatHeroInfo.MonsterPowerUpConfig.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; bool isUlock = combatHeroInfo.level >= combatHeroInfo.modelConfig.fabaoActiveLv[i]; cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent((faBaoWidget) => { faBaoWidget.CustomInit(new FaBaoInfo(combatHeroInfo.modelConfig.fa_bao_id[index], combatHeroInfo.MonsterPowerUpConfig.FabaoLv, 1),isUlock); 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; bool isUlock = combatHeroInfo.level >= combatHeroInfo.modelConfig.skillActiveLv[i]; cTaskAwaitBuffer.AddTask(UIManager.Instance.CreateGComponent((skillWidget) => { skillWidget.CustomInit(new SkillInfo(combatHeroInfo.modelConfig.skillID[index], combatHeroInfo.MonsterPowerUpConfig.GongfaLv, combatHeroInfo.MonsterPowerUpConfig.GongfaStar)); skillWidget.OnClick = FaBaoWidgetOnClick; gongFaWidgetType2s.Add(skillWidget); }, GongfaRoot)); } } await cTaskAwaitBuffer.WaitAll(); } Text_Linggen.text = $"金:{combatHeroInfo.Metal} 木:{combatHeroInfo.Wood} 水:{combatHeroInfo.Water} 火:{combatHeroInfo.Fire} 土:{combatHeroInfo.Earth}"; 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(); foreach (var bossInfoHeadWidget in BossInfoHeadWidgets) { UIManager.Instance.DormancyGComponent(bossInfoHeadWidget); } BossInfoHeadWidgets.Clear(); Icon_Select.transform.SetParent(transform); Icon_Select.transform.SetAsFirstSibling(); 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 },isShowBG:true); // bossInfoPanel.CustomInit(levebattleId, result); return await result; } } }