using System; using System.Collections.Generic; using Common.Utility.CombatEvent; using Excel2Json; using Fort23.Core; using GameLogic.Bag; using GameLogic.Combat.CombatTool; using GameLogic.Combat.Hero; using GameLogic.Combat.Skill; using UnityEngine; namespace Fort23.Mono { [UIBinding(prefab = "CombatPanel")] public partial class CombatPanel : UIPanel { private ZhuanPanPanel zhuanPanLogic; private HeroHpWidget playerHeroHpWidget; public static async CTask OpenCombatPanel() { CombatPanel combatPanel = await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Middle); await combatPanel.ShowPanel(); } protected override async CTask ProOpen() { zhuanPanLogic = await UIManager.Instance.CreateGComponentForObject(ZhuanPanPanel, null, null); zhuanPanLogic.ShowPanel(); } private void Init() { } public override void Hide() { base.Hide(); UIManager.Instance.DormancyGComponent(zhuanPanLogic); zhuanPanLogic = null; UIManager.Instance.DormancyAllGComponent(); UIManager.Instance.DormancyGComponent(playerHeroHpWidget); playerHeroHpWidget = null; UIManager.Instance.DormancyAllGComponent(); } protected override void AddEvent() { // CombatEventManager.Instance.AddEventListener(CombatEventType.AddMagicWeaponHeroEntity, // AddMagicWeaponHeroEntity); CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa); StaticUpdater.Instance.AddLateUpdateCallBack(Update); // CameraSelect.value = 0.7f; } protected override void DelEvent() { // CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddMagicWeaponHeroEntity, // AddMagicWeaponHeroEntity); CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa); StaticUpdater.Instance.RemoveLateUpdateCallBack(Update); } private async void AddUseGongFa(IEventData ieveData) { AddUseGongFaEventData eventData = ieveData as AddUseGongFaEventData; SkillBasic skillBasic = eventData.SkillBasic; if (skillBasic.CombatHeroEntity.IsEnemy) { return; } UseQuqueSkill useQuqueSkill = await UIManager.Instance.CreateGComponentForObject(UseQuqueSkill, null, UseQuqueSkillRoot, isInstance: true); useQuqueSkill.ShowWidget(skillBasic); useQuqueSkill.transform.SetAsLastSibling(); } private async void AddMagicWeaponHeroEntity() { CombatMagicWeaponEntity[] magicWeaponEntities = CombatController.currActiveCombat.CombatHeroController .playerHeroEntity.MagicWeaponControl.AllMagicWeapon; int count = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity.MagicWeaponControl .MagicWeaponCount; for (int i = 0; i < count; i++) { CombatMagicWeaponEntity weaponEntity = magicWeaponEntities[i]; MagicWeaponWidget shengShiEventWidget = await UIManager.Instance.CreateGComponentForObject(MagicWeaponWidget, null, MagicWeapon, isInstance: true); shengShiEventWidget.InitWidget(weaponEntity); } // shengShiEventWidget.InitShengShiEventWidget(configId); } public async CTask ShowPanel() { playerHeroHpWidget = await UIManager.Instance.CreateGComponentForObject(PlayerHpWidget, null); playerHeroHpWidget.size = 250; playerHeroHpWidget.shieldSize = 100; playerHeroHpWidget.isFollowTarget = false; playerHeroHpWidget.Init(CombatController.currActiveCombat.CombatHeroController.playerHeroEntity); CombatHeroEntity[] allEnemy = CombatController.currActiveCombat.CombatHeroController.GetHero(true); for (int i = 0; i < allEnemy.Length; i++) { CombatHeroEntity enemy = allEnemy[i]; BossHpWidget bossHpWidget = await UIManager.Instance.CreateGComponentForObject(BossHpWidget, null, BossHpRoot, isInstance: true); bossHpWidget.ShowWidget(enemy); } AddMagicWeaponHeroEntity(); } public override void AddButtonEvent() { CameraSelect.onValueChanged.AddListener(CameraSelect_onValueChanged); AutoUse.onValueChanged.AddListener((x) => { CombatController.currActiveCombat.CombatHeroController.playerHeroEntity.MagicWeaponControl.isAutoUse = x; }); } private void CameraSelect_onValueChanged(float value) { if (CombatController.currActiveCombat == null || CombatController.currActiveCombat.CombatCameraControllder == null) { return; } CombatController.currActiveCombat.CombatCameraControllder.CameraSelect_onValueChanged(value); } public void Update() { } } }