StickerAction.cs 5.7 KB

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