AirRobotAction.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. using System;
  2. using ExtensionMethods;
  3. using UnityEngine;
  4. public class AirRobotAction : EnemyBaseAction
  5. {
  6. protected override void Start()
  7. {
  8. this.stateMachine.AddStates(typeof(AirRobotAction.StateEnum));
  9. this.stateMachine.OnEnter += this.OnMyStateEnter;
  10. this.stateMachine.OnTransfer += this.OnStateTransfer;
  11. base.AnimChangeState(AirRobotAction.StateEnum.Idle, 1f);
  12. base.transform.position = base.transform.position.SetY(base.transform.position.y + 2.5f);
  13. }
  14. protected override void Update()
  15. {
  16. this.eAttr.stiffTime = Mathf.Clamp(this.eAttr.stiffTime - Time.deltaTime, 0f, float.PositiveInfinity);
  17. float gravity = (float)((!this.InGravitySta()) ? 0 : 1);
  18. this.eAttr.timeController.SetGravity(gravity);
  19. if (this.eAttr.isDead)
  20. {
  21. return;
  22. }
  23. if (!this.IsInNormalState())
  24. {
  25. this.isAutoMoveing = false;
  26. }
  27. if (!this.isAutoMoveing || SingletonMono<WorldTime>.Instance.IsFrozen)
  28. {
  29. return;
  30. }
  31. float num = Mathf.Abs(this.eAttr.moveSpeed * Time.deltaTime);
  32. Vector3 position = base.transform.position += new Vector3(num * (float)this.eAttr.faceDir, 0f, 0f);
  33. position.y = Mathf.Clamp(position.y, LayerManager.YNum.GetGroundHeight(base.gameObject) + 0.5f, float.PositiveInfinity);
  34. base.transform.position = position;
  35. }
  36. private void OnMyStateEnter(object sender, StateMachine.StateEventArgs args)
  37. {
  38. string state = args.state;
  39. if (state != null)
  40. {
  41. if (!(state == "Die") && !(state == "HitFall") && !(state == "HitGround"))
  42. {
  43. if (state == "Fall" || state == "Idle" || state == "MoveHorizontal")
  44. {
  45. this.spineAnim.Play(args.state, true, false, 1f);
  46. }
  47. }
  48. else
  49. {
  50. this.spineAnim.Play(args.state, false, true, 1f);
  51. }
  52. }
  53. }
  54. private void OnStateTransfer(object sender, StateMachine.TransferEventArgs args)
  55. {
  56. if (this.ExitAtkSta(args.lastState, args.nextState))
  57. {
  58. this.eAttr.paBody = false;
  59. }
  60. if (args.nextState == "MoveHorizontal")
  61. {
  62. R.Audio.PlayEffect(87, new Vector3?(base.transform.position));
  63. }
  64. }
  65. public override bool IsInNormalState()
  66. {
  67. return this.stateMachine.currentState.IsInArray(AirRobotAction.NormalSta) && base.IsInNormalState();
  68. }
  69. public override bool IsInDeadState(string state)
  70. {
  71. return state.IsInArray(AirRobotAction.DieSta);
  72. }
  73. private bool InGravitySta()
  74. {
  75. return this.stateMachine.currentState.IsInArray(AirRobotAction.GravitySta);
  76. }
  77. public override void Idle1()
  78. {
  79. if (!this.IsInNormalState())
  80. {
  81. return;
  82. }
  83. base.AnimChangeState(AirRobotAction.StateEnum.Idle, 1f);
  84. }
  85. public override void AnimReady()
  86. {
  87. base.AnimChangeState(AirRobotAction.StateEnum.Idle, 1f);
  88. }
  89. public override void AnimMove()
  90. {
  91. base.AnimChangeState(AirRobotAction.StateEnum.MoveHorizontal, 1f);
  92. }
  93. protected override bool EnterAtkSta(string lastState, string nextState)
  94. {
  95. return false;
  96. }
  97. protected override bool ExitAtkSta(string lastState, string nextState)
  98. {
  99. return false;
  100. }
  101. public override bool IsInAttackState()
  102. {
  103. return false;
  104. }
  105. public override bool IsInWeakSta()
  106. {
  107. return this.eAttr.inWeakState;
  108. }
  109. private static readonly string[] NormalSta = new string[]
  110. {
  111. "Idle",
  112. "MoveHorizontal"
  113. };
  114. private static readonly string[] DieSta = new string[]
  115. {
  116. "Die",
  117. "Fall",
  118. "HitFall",
  119. "HitGround"
  120. };
  121. private static readonly string[] GravitySta = new string[]
  122. {
  123. "Fall",
  124. "HitFall",
  125. "HitGround"
  126. };
  127. public enum StateEnum
  128. {
  129. Atk1,
  130. Atk1End,
  131. Atk1Ready,
  132. Die,
  133. Fall,
  134. GetUp,
  135. Hit1,
  136. HitFall,
  137. HitGround,
  138. Idle,
  139. MoveHorizontal,
  140. MoveVertical,
  141. DieFly,
  142. DieFall,
  143. DieHitGround,
  144. Hit2,
  145. EMP,
  146. HitToFly,
  147. Atk2,
  148. Atk2End,
  149. Atk2Ready
  150. }
  151. }