CombatHPPanel.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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 (t.CurrCombatHeroInfo.heroType == 4||t.CurrCombatHeroInfo.heroType ==3)
  45. {
  46. return;
  47. }
  48. if (!currTargetHeroHp.TryGetValue(combatHeroTargetAlterEventData.targetCombatHeroEntity,
  49. out int count))
  50. {
  51. }
  52. if (count <= 0)
  53. {
  54. CreateHpUI(t);
  55. }
  56. count++;
  57. currTargetHeroHp[t] = count;
  58. }
  59. }
  60. if (combatHeroTargetAlterEventData.lasetCombatHeroEntity != null)
  61. {
  62. CombatHeroEntity t = combatHeroTargetAlterEventData.lasetCombatHeroEntity as CombatHeroEntity;
  63. if (t != null)
  64. {
  65. if (t.CurrCombatHeroInfo.heroType == 4||t.CurrCombatHeroInfo.heroType ==3)
  66. {
  67. return;
  68. }
  69. if (currTargetHeroHp.TryGetValue(combatHeroTargetAlterEventData.lasetCombatHeroEntity,
  70. out int count))
  71. {
  72. count--;
  73. if (count <= 0)
  74. {
  75. currTargetHeroHp.Remove(combatHeroTargetAlterEventData.lasetCombatHeroEntity);
  76. HeroHpUpdateEventData heroHpUpdateEventData = HeroHpUpdateEventData.Create();
  77. heroHpUpdateEventData.combatHeroEntity = t;
  78. CombatEventManager.Instance.Dispatch(CombatEventType.ClearHeroHp, heroHpUpdateEventData);
  79. }
  80. else
  81. {
  82. currTargetHeroHp[t] = count;
  83. }
  84. }
  85. }
  86. }
  87. }
  88. private async void CreateHpUI(CombatHeroEntity combatHeroEntity)
  89. {
  90. // CombatHeroEntity combatHeroEntity = createHeroHpEventData.combatHeroEntity;
  91. HeroHpWidget heroHpWidget =
  92. await UIManager.Instance.CreateGComponentForObject<HeroHpWidget>(HeroHpWidget, null, transform,
  93. isInstance: true);
  94. heroHpWidget.Init(combatHeroEntity);
  95. }
  96. private async void CreateHeroHp(IEventData iEventData)
  97. {
  98. CreateHeroHpEventData createHeroHpEventData = iEventData as CreateHeroHpEventData;
  99. CombatHeroEntity combatHeroEntity = createHeroHpEventData.combatHeroEntity;
  100. CreateHpUI(combatHeroEntity);
  101. }
  102. }
  103. }