using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.Hero; using Utility; namespace Fort23.Mono { [UIBinding(prefab = "CombatHPPanel")] public partial class CombatHPPanel : UIPanel { private Map currTargetHeroHp = new Map(); public static async CTask OpenCombatHPPanel() { await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Bottom); } private void Init() { } protected override void AddEvent() { EventManager.Instance.AddEventListener(CustomEventType.CreateHeroHp, CreateHeroHp); CombatEventManager.Instance.AddEventListener(CombatEventType.TargetAlter, TargetAlter); } protected override void DelEvent() { CombatEventManager.Instance.RemoveEventListener(CombatEventType.TargetAlter, TargetAlter); EventManager.Instance.RemoveEventListener(CustomEventType.CreateHeroHp, CreateHeroHp); } public override void AddButtonEvent() { } private async void TargetAlter(IEventData iEventData) { CombatHeroTargetAlterEventData combatHeroTargetAlterEventData = iEventData as CombatHeroTargetAlterEventData; if (combatHeroTargetAlterEventData.combatHeroEntity.IsEnemy) { return; } if (combatHeroTargetAlterEventData.targetCombatHeroEntity != null) { CombatHeroEntity t = combatHeroTargetAlterEventData.targetCombatHeroEntity as CombatHeroEntity; if (t != null) { if (t.CurrCombatHeroInfo.heroType == 4||t.CurrCombatHeroInfo.heroType ==3) { return; } if (!currTargetHeroHp.TryGetValue(combatHeroTargetAlterEventData.targetCombatHeroEntity, out int count)) { } if (count <= 0) { CreateHpUI(t); } count++; currTargetHeroHp[t] = count; } } if (combatHeroTargetAlterEventData.lasetCombatHeroEntity != null) { CombatHeroEntity t = combatHeroTargetAlterEventData.lasetCombatHeroEntity as CombatHeroEntity; if (t != null) { if (t.CurrCombatHeroInfo.heroType == 4||t.CurrCombatHeroInfo.heroType ==3) { return; } if (currTargetHeroHp.TryGetValue(combatHeroTargetAlterEventData.lasetCombatHeroEntity, out int count)) { count--; if (count <= 0) { currTargetHeroHp.Remove(combatHeroTargetAlterEventData.lasetCombatHeroEntity); HeroHpUpdateEventData heroHpUpdateEventData = HeroHpUpdateEventData.Create(); heroHpUpdateEventData.combatHeroEntity = t; CombatEventManager.Instance.Dispatch(CombatEventType.ClearHeroHp, heroHpUpdateEventData); } else { currTargetHeroHp[t] = count; } } } } } private async void CreateHpUI(CombatHeroEntity combatHeroEntity) { // CombatHeroEntity combatHeroEntity = createHeroHpEventData.combatHeroEntity; HeroHpWidget heroHpWidget = await UIManager.Instance.CreateGComponentForObject(HeroHpWidget, null, transform, isInstance: true); heroHpWidget.Init(combatHeroEntity); } private async void CreateHeroHp(IEventData iEventData) { CreateHeroHpEventData createHeroHpEventData = iEventData as CreateHeroHpEventData; CombatHeroEntity combatHeroEntity = createHeroHpEventData.combatHeroEntity; CreateHpUI(combatHeroEntity); } } }