ReflectFixHurtFunEvent.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using UnityEngine;
  2. using System.Collections;
  3. public class ReflectFixHurtFunEvent : DurationFunctionEvent
  4. {
  5. int internalFrame = 0;
  6. int nextRecoverFrame = 0;
  7. bool bIsCanReflect = false;
  8. public static ReflectFixHurtFunEvent Creator(BuffFunctionData data)
  9. {
  10. return new ReflectFixHurtFunEvent(data);
  11. }
  12. public ReflectFixHurtFunEvent(BuffFunctionData data) : base(data)
  13. {
  14. mType = data.functionType;
  15. internalFrame = (int)(data.intervalTime * Constants.frame_to_time);
  16. nextRecoverFrame = 0;
  17. bIsCanReflect = false;
  18. }
  19. public override void Enter(Fighter fighter)
  20. {
  21. EventMgr.AddEventListener<UIEventParamFighterHurt>(ECoreEventType.EID_FIGHTER_HURT, OnFighterHurt);
  22. base.Enter(fighter);
  23. }
  24. public override void Exit(Fighter fighter)
  25. {
  26. EventMgr.RemoveEventListener<UIEventParamFighterHurt>(ECoreEventType.EID_FIGHTER_HURT, OnFighterHurt);
  27. base.Exit(fighter);
  28. }
  29. public override void Update(float deltaTime)
  30. {
  31. base.Update(deltaTime);
  32. if (bIsCanReflect)
  33. return;
  34. nextRecoverFrame--;
  35. if (nextRecoverFrame <= 0)
  36. {
  37. nextRecoverFrame = internalFrame;
  38. bIsCanReflect = true;
  39. }
  40. }
  41. private void OnFighterHurt(CoreEvent<UIEventParamFighterHurt> ce)
  42. {
  43. if (!bIsCanReflect)
  44. return;
  45. else
  46. bIsCanReflect = false;
  47. UIEventParamFighterHurt param = ce.Data;
  48. Fighter caster = param.mCaster;
  49. Fighter target = param.mTarget;
  50. if (mHitInfo.Target.Id == target.Id)
  51. {
  52. caster.ProcessReflectDamage(Data.value,"", target);
  53. }
  54. }
  55. }