WuXingGongFaWidget.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using System.Collections.Generic;
  2. using Common.Utility.CombatEvent;
  3. using Fort23.Core;
  4. using GameLogic.Combat.CombatTool;
  5. using GameLogic.Combat.Skill;
  6. using GameLogic.Player;
  7. namespace Fort23.Mono
  8. {
  9. [UIBinding(prefab = "WuXingGongFaWidget")]
  10. public partial class WuXingGongFaWidget : UIComponent
  11. {
  12. public int index;
  13. private SkillBasic currUseSkill;
  14. private List<DengDaiSkillWidget> currDengDaiSkill = new List<DengDaiSkillWidget>();
  15. private void Init()
  16. {
  17. }
  18. public override void AddEvent()
  19. {
  20. CombatEventManager.Instance.AddEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate);
  21. CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  22. CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkill, UseSkill);
  23. CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkillFinish, UseSkillFinish);
  24. CombatEventManager.Instance.AddEventListener(CombatEventType.FillInSkillSlots, FillInSkillSlots);
  25. }
  26. public override void DelEvent()
  27. {
  28. CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroHpUpdate, HeroHpUpdate);
  29. CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  30. CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkill, UseSkill);
  31. CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkillFinish, UseSkillFinish);
  32. CombatEventManager.Instance.RemoveEventListener(CombatEventType.FillInSkillSlots, FillInSkillSlots);
  33. }
  34. public override void AddButtonEvent()
  35. {
  36. }
  37. public void ShowWidget(int index)
  38. {
  39. this.index = index;
  40. }
  41. private void FillInSkillSlots(IEventData iEventData)
  42. {
  43. FillInSkillSlotsEventData fillInSkillSlotsEventData = iEventData as FillInSkillSlotsEventData;
  44. if (fillInSkillSlotsEventData.SkillBasic.CombatHeroEntity.IsEnemy)
  45. {
  46. return;
  47. }
  48. for (int i = 0; i < currDengDaiSkill.Count; i++)
  49. {
  50. DengDaiSkillWidget skillWidget = currDengDaiSkill[i];
  51. if (currDengDaiSkill[i].SkillBasic == fillInSkillSlotsEventData.SkillBasic)
  52. {
  53. UIManager.Instance.DormancyGComponent(skillWidget);
  54. currDengDaiSkill.RemoveAt(i);
  55. }
  56. }
  57. }
  58. private async void UseSkillFinish(IEventData iEventData)
  59. {
  60. UseSkillFinishEventData combatUseSkillEventData = iEventData as UseSkillFinishEventData;
  61. if (combatUseSkillEventData.SkillBasic.CombatHeroEntity.IsEnemy)
  62. {
  63. return;
  64. }
  65. SkillBasic skillBasic = combatUseSkillEventData.SkillBasic;
  66. bool isOk = IsMyWuXing(skillBasic.wuXingType);
  67. if (!isOk)
  68. {
  69. return;
  70. }
  71. useSkillIcon.gameObject.SetActive(false);
  72. DengDaiSkillWidget dengDaiSkillWidget =
  73. await UIManager.Instance.CreateGComponentForObject<DengDaiSkillWidget>(DengDaiSkillWidget, null,
  74. root: dengDaiSkill, isInstance: true);
  75. dengDaiSkillWidget.ShowWidget(skillBasic);
  76. currDengDaiSkill.Add(dengDaiSkillWidget);
  77. }
  78. private bool IsMyWuXing(WuXingType wuXingType)
  79. {
  80. bool isOk = false;
  81. switch (wuXingType)
  82. {
  83. case WuXingType.Gold:
  84. if (index == 0)
  85. {
  86. isOk = true;
  87. }
  88. break;
  89. case WuXingType.Water:
  90. if (index == 1)
  91. {
  92. isOk = true;
  93. }
  94. break;
  95. case WuXingType.Wood:
  96. if (index == 2)
  97. {
  98. isOk = true;
  99. }
  100. break;
  101. case WuXingType.Fire:
  102. if (index == 3)
  103. {
  104. isOk = true;
  105. }
  106. break;
  107. case WuXingType.Earth:
  108. if (index == 4)
  109. {
  110. isOk = true;
  111. }
  112. break;
  113. }
  114. return isOk;
  115. }
  116. private void UseSkill(IEventData iEventData)
  117. {
  118. CombatUseSkillEventData combatUseSkillEventData = iEventData as CombatUseSkillEventData;
  119. if (!combatUseSkillEventData.useSkill.CombatHeroEntity.IsEnemy)
  120. {
  121. bool isOk = IsMyWuXing(combatUseSkillEventData.useSkill.wuXingType);
  122. if (isOk)
  123. {
  124. currUseSkill = combatUseSkillEventData.useSkill;
  125. useSkillIcon.gameObject.SetActive(true);
  126. useSkillIcon.icon_name = combatUseSkillEventData.useSkill.SelfSkillConfig.icon;
  127. }
  128. }
  129. }
  130. private void AddUseGongFa(IEventData iEventData)
  131. {
  132. AddUseGongFaEventData addUseGongFaEventData = iEventData as AddUseGongFaEventData;
  133. if (!addUseGongFaEventData.SkillBasic.CombatHeroEntity.IsEnemy)
  134. {
  135. bool isOk = IsMyWuXing(addUseGongFaEventData.SkillBasic.wuXingType);
  136. if (isOk)
  137. {
  138. uitween.Play("show", false);
  139. }
  140. }
  141. }
  142. private void HeroHpUpdate(IEventData iEventData)
  143. {
  144. CombatHeroInfo combatHeroInfo = CombatController.currActiveCombat.CombatHeroController
  145. .playerHeroEntity.CurrCombatHeroInfo;
  146. }
  147. }
  148. }