DS60101.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Common.Utility.CombatEvent;
  2. using Fort23.Core;
  3. namespace GameLogic.Combat.Skill
  4. {
  5. /// <summary>
  6. /// 大道技能 星辰道:每次释放功法时获得一定的能量,能量满后提升转盘速度
  7. /// </summary>
  8. public class DS60101 : SkillBasic
  9. {
  10. public float currEnergy = 0;
  11. private float _currTime;
  12. public bool isSkillActive;
  13. public event System.Action OnSkillActivefinish;
  14. public bool isStop;
  15. public void Stop()
  16. {
  17. isStop = true;
  18. if (isSkillActive)
  19. {
  20. Finish();
  21. }
  22. }
  23. protected override void ProUseSkill()
  24. {
  25. }
  26. protected override void ProInitSkill()
  27. {
  28. CombatEventManager.Instance.AddEventListener(CombatEventType.UseSkill, UseSkill);
  29. }
  30. private void UseSkill(IEventData iEventData)
  31. {
  32. if (isStop)
  33. {
  34. return;
  35. }
  36. CombatUseSkillEventData combatUseSkillEventData = iEventData as CombatUseSkillEventData;
  37. if (combatUseSkillEventData.useSkill.CombatHeroEntity == CombatHeroEntity &&
  38. combatUseSkillEventData.useSkill.SelfSkillConfig.SkillType == 1)
  39. {
  40. if (isSkillActive)
  41. {
  42. return;
  43. }
  44. currEnergy += SelfSkillConfig.effectValue[0];
  45. if (currEnergy >= SelfSkillConfig.effectValue[1])
  46. {
  47. isSkillActive = true;
  48. _currTime = 0;
  49. currEnergy = 0;
  50. CombatHeroEntity.CurrCombatHeroInfo.addAttSpeed_bl += SelfSkillConfig.effectValue[2];
  51. }
  52. }
  53. }
  54. private void Finish()
  55. {
  56. if (isSkillActive)
  57. {
  58. CombatHeroEntity.CurrCombatHeroInfo.addAttSpeed_bl -= SelfSkillConfig.effectValue[2];
  59. isSkillActive = false;
  60. OnSkillActivefinish?.Invoke();
  61. }
  62. }
  63. protected override void ProCombatUpdate(float time)
  64. {
  65. if (isSkillActive)
  66. {
  67. _currTime += time;
  68. if (_currTime >= SelfSkillConfig.effectValue[4])
  69. {
  70. Finish();
  71. }
  72. }
  73. }
  74. protected override void ProDispose()
  75. {
  76. CombatEventManager.Instance.RemoveEventListener(CombatEventType.UseSkill, UseSkill);
  77. }
  78. }
  79. }