JudgesAction.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. using System;
  2. using System.Collections.Generic;
  3. using ExtensionMethods;
  4. using UnityEngine;
  5. public class JudgesAction : EnemyBaseAction
  6. {
  7. static Dictionary<string, int> _003C_003Ef__switch_0024map7;
  8. protected override void Start()
  9. {
  10. this.stateMachine.AddStates(typeof(JudgesAction.StateEnum));
  11. this.stateMachine.OnEnter += this.OnMyStateEnter;
  12. base.AnimChangeState(JudgesAction.StateEnum.Idle, 1f);
  13. this.attackType = JudgesAction.AttackType.Saws;
  14. this.summonRate = 30f;
  15. }
  16. protected override void Update()
  17. {
  18. this.summonRate += Time.deltaTime;
  19. if (this.IsInDefenceState() && Time.time - this.startDefenceTime >= this.defenceTime)
  20. {
  21. base.AnimChangeState(JudgesAction.StateEnum.DefenseToIdle, 1f);
  22. }
  23. base.Update();
  24. }
  25. private void OnMyStateEnter(object sender, StateMachine.StateEventArgs args)
  26. {
  27. string state = args.state;
  28. if (state != null)
  29. {
  30. if (JudgesAction._003C_003Ef__switch_0024map7 == null)
  31. {
  32. JudgesAction._003C_003Ef__switch_0024map7 = new Dictionary<string, int>(21)
  33. {
  34. {
  35. "Atk1",
  36. 0
  37. },
  38. {
  39. "Atk2",
  40. 0
  41. },
  42. {
  43. "Atk3",
  44. 0
  45. },
  46. {
  47. "Atk4_1",
  48. 0
  49. },
  50. {
  51. "Atk4_2",
  52. 0
  53. },
  54. {
  55. "Atk4_3",
  56. 0
  57. },
  58. {
  59. "Atk5",
  60. 0
  61. },
  62. {
  63. "Atk6",
  64. 0
  65. },
  66. {
  67. "Atk7",
  68. 0
  69. },
  70. {
  71. "DefenseState",
  72. 0
  73. },
  74. {
  75. "DefenseToIdle",
  76. 0
  77. },
  78. {
  79. "IdleToDefense",
  80. 0
  81. },
  82. {
  83. "HitQTE1",
  84. 0
  85. },
  86. {
  87. "HitQTE2",
  88. 0
  89. },
  90. {
  91. "HitQTE3",
  92. 0
  93. },
  94. {
  95. "HitQTE4",
  96. 0
  97. },
  98. {
  99. "DieQTE",
  100. 0
  101. },
  102. {
  103. "IdleToWeak",
  104. 0
  105. },
  106. {
  107. "WeakToIdle",
  108. 0
  109. },
  110. {
  111. "WeakMod",
  112. 1
  113. },
  114. {
  115. "Idle",
  116. 1
  117. }
  118. };
  119. }
  120. int num;
  121. if (JudgesAction._003C_003Ef__switch_0024map7.TryGetValue(state, out num))
  122. {
  123. if (num != 0)
  124. {
  125. if (num == 1)
  126. {
  127. this.spineAnim.Play(args.state, true, false, 1f);
  128. }
  129. }
  130. else
  131. {
  132. this.spineAnim.Play(args.state, false, true, 1f);
  133. }
  134. }
  135. }
  136. }
  137. public override void Attack1(int dir)
  138. {
  139. this.summonRate = 0f;
  140. if (this.eAttr.isDead)
  141. {
  142. return;
  143. }
  144. if ((R.Enemy.Count > 2 && R.GameData.Difficulty <= 1) || (R.Enemy.Count > 3 && R.GameData.Difficulty > 1))
  145. {
  146. return;
  147. }
  148. if (!this.IsInNormalState())
  149. {
  150. return;
  151. }
  152. base.AnimChangeState(JudgesAction.StateEnum.Atk1, 1f);
  153. }
  154. public override void Attack2(int dir)
  155. {
  156. if (this.eAttr.isDead)
  157. {
  158. return;
  159. }
  160. if (!this.IsInNormalState())
  161. {
  162. return;
  163. }
  164. base.AnimChangeState(JudgesAction.StateEnum.Atk2, 1f);
  165. }
  166. public override void Attack3(int dir)
  167. {
  168. if (this.eAttr.isDead)
  169. {
  170. return;
  171. }
  172. if (!this.IsInNormalState())
  173. {
  174. return;
  175. }
  176. base.AnimChangeState(JudgesAction.StateEnum.Atk3, 1f);
  177. }
  178. public override void Attack4(int dir)
  179. {
  180. if (this.eAttr.isDead)
  181. {
  182. return;
  183. }
  184. if (!this.IsInNormalState())
  185. {
  186. return;
  187. }
  188. base.AnimChangeState(JudgesAction.StateEnum.Atk4_1, 1f);
  189. }
  190. public override void Attack5(int dir)
  191. {
  192. if (this.eAttr.isDead)
  193. {
  194. return;
  195. }
  196. if (!this.IsInNormalState())
  197. {
  198. return;
  199. }
  200. base.AnimChangeState(JudgesAction.StateEnum.Atk5, 1f);
  201. }
  202. public override void Attack6(int dir)
  203. {
  204. if (this.eAttr.isDead)
  205. {
  206. return;
  207. }
  208. if (!this.IsInNormalState())
  209. {
  210. return;
  211. }
  212. base.AnimChangeState(JudgesAction.StateEnum.Atk6, 1f);
  213. }
  214. public override void Attack7(int dir)
  215. {
  216. if (this.eAttr.isDead)
  217. {
  218. return;
  219. }
  220. if (!this.IsInNormalState())
  221. {
  222. return;
  223. }
  224. base.AnimChangeState(JudgesAction.StateEnum.Atk7, 1f);
  225. }
  226. public override void Defence()
  227. {
  228. if (this.eAttr.isDead)
  229. {
  230. return;
  231. }
  232. if (this.IsInDefenceState())
  233. {
  234. return;
  235. }
  236. if (!this.eAttr.isOnGround)
  237. {
  238. return;
  239. }
  240. if (this.IsInWeakSta())
  241. {
  242. return;
  243. }
  244. if (this.stateMachine.currentState.IsInArray(JudgesAction.QTEState))
  245. {
  246. return;
  247. }
  248. base.Defence();
  249. this.eAttr.timeController.SetSpeed(Vector2.zero);
  250. this.startDefenceTime = Time.time;
  251. this.defenceTime = UnityEngine.Random.Range(2f, 4f);
  252. base.AnimChangeState(JudgesAction.StateEnum.IdleToDefense, 1f);
  253. }
  254. public override void DefenceSuccess()
  255. {
  256. if (this.eAttr.isDead)
  257. {
  258. return;
  259. }
  260. if (!this.eAttr.isOnGround)
  261. {
  262. return;
  263. }
  264. if (this.IsInWeakSta())
  265. {
  266. return;
  267. }
  268. base.AnimChangeState(JudgesAction.StateEnum.DefenseState, 1f);
  269. }
  270. public override void AnimMove()
  271. {
  272. }
  273. public override void AnimReady()
  274. {
  275. base.AnimChangeState(JudgesAction.StateEnum.Idle, 1f);
  276. }
  277. public override bool IsInNormalState()
  278. {
  279. return this.stateMachine.currentState == "Idle" && base.IsInNormalState();
  280. }
  281. public override bool IsInAttackState()
  282. {
  283. return this.stateMachine.currentState.IsInArray(JudgesAction.AttackSta);
  284. }
  285. public override bool IsInDeadState(string state)
  286. {
  287. return state == "DieQTE";
  288. }
  289. public override bool IsInWeakSta()
  290. {
  291. return this.eAttr.inWeakState;
  292. }
  293. protected override bool EnterAtkSta(string lastState, string nextState)
  294. {
  295. return nextState.IsInArray(JudgesAction.AttackSta) && !lastState.IsInArray(JudgesAction.AttackSta);
  296. }
  297. protected override bool ExitAtkSta(string lastState, string nextState)
  298. {
  299. return !nextState.IsInArray(JudgesAction.AttackSta) && lastState.IsInArray(JudgesAction.AttackSta);
  300. }
  301. public override void AnimQTEHurt()
  302. {
  303. base.ExitWeakState(true);
  304. JudgesHurt component = base.GetComponent<JudgesHurt>();
  305. switch (component.currentPhase)
  306. {
  307. case 0:
  308. base.AnimChangeState(JudgesAction.StateEnum.HitQTE1, 1f);
  309. break;
  310. case 1:
  311. base.AnimChangeState(JudgesAction.StateEnum.HitQTE2, 1f);
  312. break;
  313. case 2:
  314. base.AnimChangeState(JudgesAction.StateEnum.HitQTE3, 1f);
  315. break;
  316. case 3:
  317. this.attackType = ((UnityEngine.Random.Range(0, 2) != 0) ? JudgesAction.AttackType.Laser : JudgesAction.AttackType.Saws);
  318. base.AnimChangeState(JudgesAction.StateEnum.HitQTE4, 1f);
  319. break;
  320. }
  321. }
  322. public override void AnimExecute()
  323. {
  324. base.ExitWeakState(true);
  325. base.AnimChangeState(JudgesAction.StateEnum.DieQTE, 1f);
  326. }
  327. public float summonRate;
  328. public JudgesAction.AttackType attackType;
  329. private static readonly string[] AttackSta = new string[]
  330. {
  331. "Atk1",
  332. "Atk2",
  333. "Atk3",
  334. "Atk4_1",
  335. "Atk4_2",
  336. "Atk4_3",
  337. "Atk5",
  338. "Atk6",
  339. "Atk7"
  340. };
  341. public static readonly string[] QTEState = new string[]
  342. {
  343. "HitQTE1",
  344. "HitQTE2",
  345. "HitQTE3",
  346. "HitQTE4",
  347. "DieQTE"
  348. };
  349. public enum AttackType
  350. {
  351. Saws,
  352. Laser,
  353. HitGround
  354. }
  355. public enum StateEnum
  356. {
  357. Idle,
  358. Atk1,
  359. Atk2,
  360. Atk3,
  361. Atk4_1,
  362. Atk4_2,
  363. Atk4_3,
  364. Atk5,
  365. Atk6,
  366. Atk7,
  367. IdleToDefense,
  368. DefenseState,
  369. DefenseToIdle,
  370. WeakMod,
  371. HitQTE1,
  372. HitQTE2,
  373. HitQTE3,
  374. HitQTE4,
  375. DieQTE,
  376. IdleToWeak,
  377. WeakToIdle
  378. }
  379. }