HammerAction.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. using System;
  2. using System.Collections.Generic;
  3. using ExtensionMethods;
  4. using UnityEngine;
  5. public class HammerAction : EnemyBaseAction
  6. {
  7. static Dictionary<string, int> _003C_003Ef__switch_0024map5;
  8. protected override void Start()
  9. {
  10. this.stateMachine.AddStates(typeof(HammerAction.StateEnum));
  11. this.stateMachine.OnEnter += this.OnMyStateEnter;
  12. this.stateMachine.OnTransfer += this.OnStateTransfer;
  13. base.AnimChangeState(HammerAction.StateEnum.Idle, 1f);
  14. }
  15. private void OnMyStateEnter(object sender, StateMachine.StateEventArgs args)
  16. {
  17. string state = args.state;
  18. if (state != null)
  19. {
  20. if (HammerAction._003C_003Ef__switch_0024map5 == null)
  21. {
  22. HammerAction._003C_003Ef__switch_0024map5 = new Dictionary<string, int>(13)
  23. {
  24. {
  25. "Atk1",
  26. 0
  27. },
  28. {
  29. "Atk2",
  30. 0
  31. },
  32. {
  33. "Atk3",
  34. 0
  35. },
  36. {
  37. "DieQTE",
  38. 0
  39. },
  40. {
  41. "Hit1",
  42. 0
  43. },
  44. {
  45. "Hit2",
  46. 0
  47. },
  48. {
  49. "IdleToWeakMod",
  50. 0
  51. },
  52. {
  53. "Jump",
  54. 0
  55. },
  56. {
  57. "WeakModToIdle",
  58. 0
  59. },
  60. {
  61. "HitQTE",
  62. 0
  63. },
  64. {
  65. "Idle",
  66. 1
  67. },
  68. {
  69. "Move",
  70. 1
  71. },
  72. {
  73. "WeakMod",
  74. 1
  75. }
  76. };
  77. }
  78. int num;
  79. if (HammerAction._003C_003Ef__switch_0024map5.TryGetValue(state, out num))
  80. {
  81. if (num != 0)
  82. {
  83. if (num == 1)
  84. {
  85. this.spineAnim.Play(args.state, true, false, 1f);
  86. }
  87. }
  88. else
  89. {
  90. this.spineAnim.Play(args.state, false, true, 1f);
  91. }
  92. }
  93. }
  94. }
  95. private void OnStateTransfer(object sender, StateMachine.TransferEventArgs args)
  96. {
  97. if (args.lastState == "Jump" || args.lastState == "Atk3")
  98. {
  99. this.eAttr.timeController.SetGravity(1f);
  100. }
  101. if (args.nextState == "WeakMod")
  102. {
  103. R.Audio.PlayEffect(405, new Vector3?(base.transform.position));
  104. }
  105. }
  106. public override void Attack1(int dir)
  107. {
  108. if (this.eAttr.isDead)
  109. {
  110. return;
  111. }
  112. if (!this.IsInNormalState())
  113. {
  114. return;
  115. }
  116. base.ChangeFace(dir);
  117. base.AnimChangeState(HammerAction.StateEnum.Atk1, 1f);
  118. }
  119. public override void Attack2(int dir)
  120. {
  121. if (this.eAttr.isDead)
  122. {
  123. return;
  124. }
  125. if (!this.IsInNormalState())
  126. {
  127. return;
  128. }
  129. base.ChangeFace(dir);
  130. base.AnimChangeState(HammerAction.StateEnum.Atk2, 1f);
  131. }
  132. public override void Attack3(int dir)
  133. {
  134. if (this.eAttr.isDead)
  135. {
  136. return;
  137. }
  138. if (!this.IsInNormalState())
  139. {
  140. return;
  141. }
  142. base.ChangeFace(dir);
  143. this.eAttr.timeController.SetGravity(0f);
  144. this.eAttr.timeController.SetSpeed(Vector2.zero);
  145. base.AnimChangeState(HammerAction.StateEnum.Atk3, 1f);
  146. }
  147. public override void CounterAttack(int dir)
  148. {
  149. if (this.eAttr.isDead)
  150. {
  151. return;
  152. }
  153. if (this.IsInAttackState())
  154. {
  155. return;
  156. }
  157. if (this.stateMachine.currentState.IsInArray(HammerAction.QTESta) || this.IsInWeakSta())
  158. {
  159. return;
  160. }
  161. R.Effect.Generate(128, base.transform, Vector3.up * 3.3f, Vector3.zero, default(Vector3), true);
  162. base.ChangeFace(dir);
  163. base.AnimChangeState(HammerAction.StateEnum.Atk1, 1f);
  164. }
  165. public override void AnimMove()
  166. {
  167. base.AnimChangeState(HammerAction.StateEnum.Move, 1f);
  168. }
  169. public override void AnimReady()
  170. {
  171. base.AnimChangeState(HammerAction.StateEnum.Idle, 1f);
  172. }
  173. public override bool IsInNormalState()
  174. {
  175. return this.stateMachine.currentState.IsInArray(HammerAction.NormalSta) && base.IsInNormalState();
  176. }
  177. public override bool IsInAttackState()
  178. {
  179. return this.stateMachine.currentState.IsInArray(HammerAction.AttackSta);
  180. }
  181. public override bool IsInDeadState(string state)
  182. {
  183. return state == "DieQTE";
  184. }
  185. public override bool IsInWeakSta()
  186. {
  187. return this.eAttr.inWeakState;
  188. }
  189. protected override bool EnterAtkSta(string lastState, string nextState)
  190. {
  191. return nextState.IsInArray(HammerAction.AttackSta) && !lastState.IsInArray(HammerAction.AttackSta);
  192. }
  193. protected override bool ExitAtkSta(string lastState, string nextState)
  194. {
  195. return !nextState.IsInArray(HammerAction.AttackSta) && lastState.IsInArray(HammerAction.AttackSta);
  196. }
  197. public override void AnimQTEHurt()
  198. {
  199. int dir = (base.player.transform.localScale.x >= 0f) ? 1 : -1;
  200. base.ChangeFace(dir);
  201. base.ExitWeakState(true);
  202. Vector3 position = base.transform.position;
  203. position.y = LayerManager.YNum.GetGroundHeight(base.gameObject);
  204. position.z = LayerManager.ZNum.TempEnemy;
  205. base.transform.position = position;
  206. base.AnimChangeState(HammerAction.StateEnum.HitQTE, 1f);
  207. }
  208. public override void AnimExecute()
  209. {
  210. int dir = (base.player.transform.localScale.x >= 0f) ? 1 : -1;
  211. base.ChangeFace(dir);
  212. base.ExitWeakState(true);
  213. Vector3 position = base.transform.position;
  214. position.y = LayerManager.YNum.GetGroundHeight(base.gameObject);
  215. position.z = LayerManager.ZNum.TempEnemy;
  216. base.transform.position = position;
  217. base.AnimChangeState(HammerAction.StateEnum.DieQTE, 1f);
  218. }
  219. private static readonly string[] NormalSta = new string[]
  220. {
  221. "Idle",
  222. "Move"
  223. };
  224. private static readonly string[] AttackSta = new string[]
  225. {
  226. "Atk1",
  227. "Atk2",
  228. "Atk3"
  229. };
  230. public static readonly string[] HurtSta = new string[]
  231. {
  232. "Hit1",
  233. "Hit2",
  234. "HitQTE"
  235. };
  236. public static readonly string[] QTESta = new string[]
  237. {
  238. "HitQTE",
  239. "DieQTE"
  240. };
  241. public enum StateEnum
  242. {
  243. Idle,
  244. Move,
  245. Atk1,
  246. Atk2,
  247. DieQTE,
  248. Hit1,
  249. Hit2,
  250. IdleToWeakMod,
  251. Jump,
  252. WeakMod,
  253. WeakModToIdle,
  254. Atk3,
  255. HitQTE
  256. }
  257. }