CombatHPPanel.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using Common.Utility.CombatEvent;
  2. using Fort23.Core;
  3. using GameLogic.Combat.Hero;
  4. using Utility;
  5. namespace Fort23.Mono
  6. {
  7. [UIBinding(prefab = "CombatHPPanel")]
  8. public partial class CombatHPPanel : UIPanel
  9. {
  10. private Map<IHero, int> currTargetHeroHp = new Map<IHero, int>();
  11. public static async CTask OpenCombatHPPanel()
  12. {
  13. await UIManager.Instance.LoadAndOpenPanel<CombatHPPanel>(null, UILayer.Bottom);
  14. }
  15. private void Init()
  16. {
  17. }
  18. protected override void AddEvent()
  19. {
  20. EventManager.Instance.AddEventListener(CustomEventType.CreateHeroHp, CreateHeroHp);
  21. CombatEventManager.Instance.AddEventListener(CombatEventType.TargetAlter, TargetAlter);
  22. }
  23. protected override void DelEvent()
  24. {
  25. CombatEventManager.Instance.RemoveEventListener(CombatEventType.TargetAlter, TargetAlter);
  26. EventManager.Instance.RemoveEventListener(CustomEventType.CreateHeroHp, CreateHeroHp);
  27. }
  28. public override void AddButtonEvent()
  29. {
  30. }
  31. private async void TargetAlter(IEventData iEventData)
  32. {
  33. CombatHeroTargetAlterEventData combatHeroTargetAlterEventData =
  34. iEventData as CombatHeroTargetAlterEventData;
  35. if (combatHeroTargetAlterEventData.combatHeroEntity.IsEnemy)
  36. {
  37. return;
  38. }
  39. if (combatHeroTargetAlterEventData.targetCombatHeroEntity != null)
  40. {
  41. CombatHeroEntity t = combatHeroTargetAlterEventData.targetCombatHeroEntity as CombatHeroEntity;
  42. if (t != null)
  43. {
  44. if (!currTargetHeroHp.TryGetValue(combatHeroTargetAlterEventData.targetCombatHeroEntity,
  45. out int count))
  46. {
  47. }
  48. if (count <= 0)
  49. {
  50. CreateHpUI(t);
  51. }
  52. count++;
  53. currTargetHeroHp[t] = count;
  54. }
  55. }
  56. if (combatHeroTargetAlterEventData.lasetCombatHeroEntity != null)
  57. {
  58. CombatHeroEntity t = combatHeroTargetAlterEventData.lasetCombatHeroEntity as CombatHeroEntity;
  59. if (t != null)
  60. {
  61. if (currTargetHeroHp.TryGetValue(combatHeroTargetAlterEventData.lasetCombatHeroEntity,
  62. out int count))
  63. {
  64. count--;
  65. if (count <= 0)
  66. {
  67. currTargetHeroHp.Remove(combatHeroTargetAlterEventData.lasetCombatHeroEntity);
  68. HeroHpUpdateEventData heroHpUpdateEventData = HeroHpUpdateEventData.Create();
  69. heroHpUpdateEventData.combatHeroEntity = t;
  70. CombatEventManager.Instance.Dispatch(CombatEventType.ClearHeroHp, heroHpUpdateEventData);
  71. }
  72. else
  73. {
  74. currTargetHeroHp[t] = count;
  75. }
  76. }
  77. }
  78. }
  79. }
  80. private async void CreateHpUI(CombatHeroEntity combatHeroEntity)
  81. {
  82. // CombatHeroEntity combatHeroEntity = createHeroHpEventData.combatHeroEntity;
  83. HeroHpWidget heroHpWidget =
  84. await UIManager.Instance.CreateGComponentForObject<HeroHpWidget>(HeroHpWidget, null, transform,
  85. isInstance: true);
  86. heroHpWidget.Init(combatHeroEntity);
  87. }
  88. private async void CreateHeroHp(IEventData iEventData)
  89. {
  90. CreateHeroHpEventData createHeroHpEventData = iEventData as CreateHeroHpEventData;
  91. CombatHeroEntity combatHeroEntity = createHeroHpEventData.combatHeroEntity;
  92. CreateHpUI(combatHeroEntity);
  93. }
  94. }
  95. }