123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- using Common.Utility.CombatEvent;
- using Fort23.Core;
- using GameLogic.Combat.Hero;
- using UnityEngine;
- using Utility;
- namespace Fort23.Mono
- {
- [UIBinding(prefab = "CombatHPPanel")]
- public partial class CombatHPPanel : UIPanel
- {
- private Map<IHero, int> currTargetHeroHp = new Map<IHero, int>();
- private CombatHeroEntity heroFocusEnemy;
- public static async CTask OpenCombatHPPanel()
- {
- await UIManager.Instance.LoadAndOpenPanel<CombatHPPanel>(null, UILayer.Bottom);
- }
- public static async CTask CloseCombatHPPanel()
- {
- UIManager.Instance.HideUIUIPanel<CombatHPPanel>();
- }
- private void Init()
- {
- isAddStack = false;
- }
- protected override void AddEvent()
- {
- CombatEventManager.Instance.AddEventListener(CombatEventType.TargetAlter, AlaterTargetFocus);
- EventManager.Instance.AddEventListener(CustomEventType.CreateHeroHp, CreateHeroHp);
- StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
- TargetFocus.gameObject.SetActive(false);
- // CombatEventManager.Instance.AddEventListener(CombatEventType.TargetAlter, TargetAlter);
- }
- protected override void DelEvent()
- {
- EventManager.Instance.RemoveEventListener(CustomEventType.CreateHeroHp, CreateHeroHp);
- StaticUpdater.Instance.RemoveRenderUpdateCallBack(Update);
- // CombatEventManager.Instance.RemoveEventListener(CombatEventType.TargetAlter, TargetAlter);
- CombatEventManager.Instance.RemoveEventListener(CombatEventType.TargetAlter, AlaterTargetFocus);
- }
- 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>(HeroHpWidget, null, transform,
- isInstance: true);
- heroHpWidget.Init(combatHeroEntity);
- }
- private void AlaterTargetFocus(IEventData iEventData)
- {
- CombatHeroTargetAlterEventData combatHeroTargetAlterEventData = iEventData as CombatHeroTargetAlterEventData;
- CombatHeroEntity combatHeroEntity= combatHeroTargetAlterEventData.combatHeroEntity as CombatHeroEntity;
- if (!combatHeroEntity.isPlayer||combatHeroTargetAlterEventData.targetCombatHeroEntity == heroFocusEnemy)
- {
- return;
- }
- heroFocusEnemy = combatHeroTargetAlterEventData.targetCombatHeroEntity as CombatHeroEntity;
- TargetFocus.gameObject.SetActive(heroFocusEnemy!=null);
- UpdateFocusUI();
- }
- private async void CreateHeroHp(IEventData iEventData)
- {
- CreateHeroHpEventData createHeroHpEventData = iEventData as CreateHeroHpEventData;
- CombatHeroEntity combatHeroEntity = createHeroHpEventData.combatHeroEntity;
- if (!combatHeroEntity.isCreateHeroHp)
- {
- return;
- }
- CreateHpUI(combatHeroEntity);
- }
- private void UpdateFocusUI()
- {
- if (heroFocusEnemy == null)
- {
- return;
- }
- Vector3 worldPos = heroFocusEnemy.combatHeroGameObject.hpTransform.position;
- Vector3 p = UIManager.Instance.CurrCustomCameraStack.camera.WorldToScreenPoint(worldPos);
- Vector3 p2 = UIManager.Instance.UICamera.ScreenToWorldPoint(p);
- Vector3 pos = Vector3.zero;
- if (heroFocusEnemy.isCreateHeroHp)
- {
- pos = new Vector3(0, 0.1f, 0);
- }
- TargetFocus.position = p2+pos;
- }
- public void Update()
- {
- UpdateFocusUI();
- }
- public override void Close()
- {
- UIManager.Instance.DormancyAllGComponent<HeroHpWidget>();
- base.Close();
- }
- }
- }
|