JudgesAnimEvent.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. using System;
  2. using System.Collections;
  3. using GameWorld;
  4. using LitJson;
  5. using UnityEngine;
  6. public class JudgesAnimEvent : BaseBehaviour
  7. {
  8. private Transform player
  9. {
  10. get
  11. {
  12. return R.Player.Transform;
  13. }
  14. }
  15. private void Awake()
  16. {
  17. this._action = base.GetComponent<JudgesAction>();
  18. this._eAttr = base.GetComponent<EnemyAttribute>();
  19. this._spineAnim = base.GetComponent<SpineAnimationController>();
  20. this._baseHurt = base.GetComponent<EnemyBaseHurt>();
  21. this._animEventListener = this.player.GetComponent<PlayerAnimEventListener>();
  22. }
  23. private void Start()
  24. {
  25. this._jsonData = SingletonMono<EnemyDataPreload>.Instance.attack[EnemyType.犹大];
  26. }
  27. public void ChangeState(JudgesAction.StateEnum sta)
  28. {
  29. this._action.AnimChangeState(sta, 1f);
  30. }
  31. public void SetAtkData()
  32. {
  33. EnemyAtk[] componentsInChildren = base.GetComponentsInChildren<EnemyAtk>();
  34. for (int i = 0; i < componentsInChildren.Length; i++)
  35. {
  36. componentsInChildren[i].atkData = this._jsonData[this._action.stateMachine.currentState];
  37. componentsInChildren[i].atkId = Incrementor.GetNextId();
  38. }
  39. }
  40. public void SetAtkId()
  41. {
  42. EnemyAtk[] componentsInChildren = base.GetComponentsInChildren<EnemyAtk>();
  43. for (int i = 0; i < componentsInChildren.Length; i++)
  44. {
  45. componentsInChildren[i].atkId = Incrementor.GetNextId();
  46. }
  47. }
  48. public void PlayAudio(int id)
  49. {
  50. R.Audio.PlayEffect(id, new Vector3?(base.transform.position));
  51. }
  52. public void Atk1Summon()
  53. {
  54. if (R.GameData.Difficulty <= 1)
  55. {
  56. this.SummonInEasyMode();
  57. }
  58. else
  59. {
  60. this.SummonInHardMode();
  61. }
  62. }
  63. private void SummonInEasyMode()
  64. {
  65. if (R.Enemy.GetEnemyCountByType(EnemyType.大脚) < 1)
  66. {
  67. this.SummonEnemy(EnemyType.大脚);
  68. }
  69. if (R.Enemy.GetEnemyCountByType(EnemyType.跳跃者) < 1)
  70. {
  71. this.SummonEnemy(EnemyType.跳跃者);
  72. }
  73. }
  74. private void SummonInHardMode()
  75. {
  76. if (R.Enemy.GetEnemyCountByType(EnemyType.跳拳大脚组合) < 1)
  77. {
  78. this.SummonEnemy(EnemyType.跳拳大脚组合);
  79. }
  80. int enemyCountByType = R.Enemy.GetEnemyCountByType(EnemyType.刀炮混合);
  81. if (enemyCountByType != 0)
  82. {
  83. if (enemyCountByType == 1)
  84. {
  85. this.SummonEnemy(EnemyType.刀炮混合);
  86. }
  87. }
  88. else
  89. {
  90. this.SummonEnemy(EnemyType.刀炮混合);
  91. this.SummonEnemy(EnemyType.刀炮混合);
  92. }
  93. }
  94. private void SummonEnemy(EnemyType type)
  95. {
  96. Vector2 value = new Vector2(UnityEngine.Random.Range(GameArea.EnemyRange.xMin + 3f, GameArea.EnemyRange.xMax - 3f), base.transform.position.y);
  97. GameObject gameObject = Singleton<EnemyGenerator>.Instance.GenerateEnemy(type, new Vector2?(value), true, true);
  98. gameObject.GetComponent<EnemyAttribute>().playerInView = true;
  99. }
  100. public void Atk2Effect()
  101. {
  102. Transform transform = R.Effect.Generate(211, null, this.thunderL.position, default(Vector3), default(Vector3), true);
  103. Transform transform2 = R.Effect.Generate(211, null, this.thunderR.position, default(Vector3), default(Vector3), true);
  104. transform2.localScale = new Vector3(-1f, 1f, 1f);
  105. EnemyBullet componentInChildren = transform.GetComponentInChildren<EnemyBullet>();
  106. componentInChildren.SetAtkData(this._jsonData["Thunder"]);
  107. componentInChildren.origin = base.gameObject;
  108. EnemyBullet componentInChildren2 = transform2.GetComponentInChildren<EnemyBullet>();
  109. componentInChildren2.SetAtkData(this._jsonData["Thunder"]);
  110. componentInChildren2.origin = base.gameObject;
  111. }
  112. public void LaserAttack(int frame)
  113. {
  114. this.halo_L.SetActive(true);
  115. this.halo_R.SetActive(true);
  116. base.StartCoroutine(this.LaserRotate(this.eye_L_F, true, frame));
  117. base.StartCoroutine(this.LaserRotate(this.eye_R_F, false, frame));
  118. }
  119. private IEnumerator LaserRotate(Transform eye, bool left, int frame)
  120. {
  121. Vector2 dir = (!left) ? (this.eye_R_F.position - this.eye_R.position) : (this.eye_L_F.position - this.eye_L.position);
  122. Transform laser = R.Effect.Generate(205, eye, default(Vector3), default(Vector3), default(Vector3), true);
  123. laser.parent = eye;
  124. Laser i = laser.GetComponent<Laser>();
  125. i.AppearLaser(dir, base.gameObject, false);
  126. i.SetAtkData(this._jsonData["Laser"], this._eAttr.atk);
  127. yield return base.StartCoroutine(i.LaserFadeIn());
  128. for (int j = 0; j < frame; j++)
  129. {
  130. if (this._action.IsInWeakSta())
  131. {
  132. break;
  133. }
  134. i.Rotate(this.GetLaserDir(left));
  135. yield return null;
  136. }
  137. yield return base.StartCoroutine(i.LaserFadeOut());
  138. UnityEngine.Object.Destroy(laser.gameObject);
  139. this.DisappearHalo();
  140. yield break;
  141. }
  142. private Vector2 GetLaserDir(bool left)
  143. {
  144. return (!left) ? (this.eye_R_F.position - this.eye_R.position) : (this.eye_L_F.position - this.eye_L.position);
  145. }
  146. private void DisappearHalo()
  147. {
  148. this.halo_L.SetActive(false);
  149. this.halo_R.SetActive(false);
  150. }
  151. public IEnumerator WeakOver()
  152. {
  153. for (int i = 0; i < 78; i++)
  154. {
  155. if (this._action.stateMachine.currentState == "WeakMod" && !this._action.IsInWeakSta())
  156. {
  157. this._action.AnimChangeState(JudgesAction.StateEnum.WeakToIdle, 1f);
  158. }
  159. yield return new WaitForFixedUpdate();
  160. }
  161. yield break;
  162. }
  163. public void DestroySelf()
  164. {
  165. R.Enemy.RemoveEnemy(this._eAttr);
  166. base.Invoke("RealDestroy", 2f);
  167. }
  168. private void RealDestroy()
  169. {
  170. UnityEngine.Object.Destroy(base.gameObject);
  171. }
  172. public void QTEHurtEnd()
  173. {
  174. string currentState = this._action.stateMachine.currentState;
  175. if (currentState != null)
  176. {
  177. if (!(currentState == "HitQTE1"))
  178. {
  179. if (!(currentState == "HitQTE2"))
  180. {
  181. if (!(currentState == "HitQTE3"))
  182. {
  183. if (currentState == "HitQTE4")
  184. {
  185. UnityEngine.Object.Destroy(this.atkBoxes[3].gameObject);
  186. this._spineAnim.Skin = "default";
  187. }
  188. }
  189. else
  190. {
  191. UnityEngine.Object.Destroy(this.atkBoxes[2].gameObject);
  192. this._spineAnim.Skin = "Cut3";
  193. }
  194. }
  195. else
  196. {
  197. UnityEngine.Object.Destroy(this.atkBoxes[1].gameObject);
  198. this._spineAnim.Skin = "Cut2";
  199. }
  200. }
  201. else
  202. {
  203. UnityEngine.Object.Destroy(this.atkBoxes[0].gameObject);
  204. this._spineAnim.Skin = "Cut1";
  205. }
  206. }
  207. this.ChangeState(JudgesAction.StateEnum.Idle);
  208. }
  209. public void QTECameraZoomIn()
  210. {
  211. string currentState = this._action.stateMachine.currentState;
  212. if (currentState != null)
  213. {
  214. if (!(currentState == "HitQTE1"))
  215. {
  216. if (!(currentState == "HitQTE2"))
  217. {
  218. if (!(currentState == "HitQTE3"))
  219. {
  220. if (currentState == "HitQTE4")
  221. {
  222. R.Camera.Controller.CameraZoom(this.brokenPoints[3].position, 0.13333334f, 3f);
  223. }
  224. }
  225. else
  226. {
  227. R.Camera.Controller.CameraZoom(this.brokenPoints[2].position, 0.13333334f, 3f);
  228. }
  229. }
  230. else
  231. {
  232. R.Camera.Controller.CameraZoom(this.brokenPoints[1].position, 0.13333334f, 3f);
  233. }
  234. }
  235. else
  236. {
  237. R.Camera.Controller.CameraZoom(this.brokenPoints[0].position, 0.13333334f, 3f);
  238. }
  239. }
  240. }
  241. public void QTEShadeAtk()
  242. {
  243. string currentState = this._action.stateMachine.currentState;
  244. if (currentState != null)
  245. {
  246. if (!(currentState == "HitQTE1"))
  247. {
  248. if (!(currentState == "HitQTE2"))
  249. {
  250. if (!(currentState == "HitQTE3"))
  251. {
  252. if (currentState == "HitQTE4")
  253. {
  254. R.Effect.Generate(177, null, this.brokenPoints[3].position, default(Vector3), default(Vector3), true);
  255. }
  256. }
  257. else
  258. {
  259. R.Effect.Generate(177, null, this.brokenPoints[2].position, default(Vector3), default(Vector3), true);
  260. }
  261. }
  262. else
  263. {
  264. R.Effect.Generate(177, null, this.brokenPoints[1].position, default(Vector3), default(Vector3), true);
  265. }
  266. }
  267. else
  268. {
  269. R.Effect.Generate(177, null, this.brokenPoints[0].position, default(Vector3), default(Vector3), true);
  270. }
  271. }
  272. }
  273. public void QTEFinalHurt()
  274. {
  275. string currentState = this._action.stateMachine.currentState;
  276. if (currentState != null)
  277. {
  278. if (!(currentState == "HitQTE1"))
  279. {
  280. if (!(currentState == "HitQTE2"))
  281. {
  282. if (!(currentState == "HitQTE3"))
  283. {
  284. if (currentState == "HitQTE4")
  285. {
  286. R.Effect.Generate(156, null, this.brokenPoints[3].position, default(Vector3), default(Vector3), true);
  287. Vector3 position = this.brokenPoints[3].position;
  288. position.z = LayerManager.ZNum.Fx;
  289. Transform transform = UnityEngine.Object.Instantiate<Transform>(this.RArmPrefab, position, Quaternion.identity);
  290. transform.GetComponent<Rigidbody2D>().velocity = new Vector2(3f, 4f);
  291. }
  292. }
  293. else
  294. {
  295. R.Effect.Generate(156, null, this.brokenPoints[2].position, default(Vector3), default(Vector3), true);
  296. Vector3 position = this.brokenPoints[2].position;
  297. position.z = LayerManager.ZNum.Fx;
  298. Transform transform2 = UnityEngine.Object.Instantiate<Transform>(this.LArmPrefab, position, Quaternion.identity);
  299. transform2.GetComponent<Rigidbody2D>().velocity = new Vector2(-3f, 4f);
  300. }
  301. }
  302. else
  303. {
  304. R.Effect.Generate(156, null, this.brokenPoints[1].position, default(Vector3), default(Vector3), true);
  305. Vector3 position = this.brokenPoints[1].position;
  306. position.z = LayerManager.ZNum.Fx;
  307. Transform transform = UnityEngine.Object.Instantiate<Transform>(this.RArmPrefab, position, Quaternion.identity);
  308. transform.GetComponent<Rigidbody2D>().velocity = new Vector2(3f, 6f);
  309. }
  310. }
  311. else
  312. {
  313. R.Effect.Generate(156, null, this.brokenPoints[0].position, default(Vector3), default(Vector3), true);
  314. Vector3 position = this.brokenPoints[0].position;
  315. position.z = LayerManager.ZNum.Fx;
  316. Transform transform2 = UnityEngine.Object.Instantiate<Transform>(this.LArmPrefab, position, Quaternion.identity);
  317. transform2.GetComponent<Rigidbody2D>().velocity = new Vector2(-3f, 6f);
  318. }
  319. }
  320. EnemyHurtAtkEventArgs args = new EnemyHurtAtkEventArgs(base.gameObject, EnemyHurtAtkEventArgs.HurtTypeEnum.QTEHurt);
  321. EventManager.PostEvent<GameObject, EnemyHurtAtkEventArgs>("EnemyHurtAtk", this.player.gameObject, args);
  322. }
  323. public void QTEPlayerRecover()
  324. {
  325. R.Player.Action.ChangeState(PlayerAction.StateEnum.EndAtk, 1f);
  326. R.Camera.Controller.CameraZoomFinished();
  327. }
  328. public void PlayerChargeStart()
  329. {
  330. R.Player.Action.ChangeState(PlayerAction.StateEnum.QTECharge1Ready, 1f);
  331. }
  332. public void PlayerChargeSuccess()
  333. {
  334. this._animEventListener.chargeAnim.ChargeOneOver();
  335. }
  336. public void PlayerChargeRelease()
  337. {
  338. this._animEventListener.ChargeEffectDisappear();
  339. R.Player.Action.ChangeState(PlayerAction.StateEnum.QTECharge1End, 1f);
  340. R.Player.Action.pab.charge.ChargeReset();
  341. }
  342. public void PlayerChargeHurt()
  343. {
  344. R.Audio.PlayEffect(405, new Vector3?(base.transform.position));
  345. R.Camera.Controller.CameraShake(0.5f, 0.4f, CameraController.ShakeTypeEnum.Rect, false);
  346. this._baseHurt.HitEffect(this.core.localPosition, "Atk1");
  347. }
  348. public void PlayerEndAtk()
  349. {
  350. R.Player.Action.ChangeState(PlayerAction.StateEnum.QTEEndAtk, 1f);
  351. }
  352. public void PlayerPush()
  353. {
  354. this.player.position = base.transform.position + new Vector3((float)(-2 * R.Player.Attribute.faceDir), 3f, 0f);
  355. R.Player.Action.ChangeState(PlayerAction.StateEnum.AirQTEPush, 1f);
  356. }
  357. public void ExecuteFinalHurt()
  358. {
  359. EnemyHurtAtkEventArgs args = new EnemyHurtAtkEventArgs(base.gameObject, EnemyHurtAtkEventArgs.HurtTypeEnum.Execute, string.Empty);
  360. EventManager.PostEvent<GameObject, EnemyHurtAtkEventArgs>("EnemyHurtAtk", this.player.gameObject, args);
  361. }
  362. private JudgesAction _action;
  363. private EnemyAttribute _eAttr;
  364. private SpineAnimationController _spineAnim;
  365. [SerializeField]
  366. private Transform[] atkBoxes;
  367. [SerializeField]
  368. private Transform[] brokenPoints;
  369. private JsonData _jsonData;
  370. [SerializeField]
  371. private Transform LArmPrefab;
  372. [SerializeField]
  373. private Transform RArmPrefab;
  374. [SerializeField]
  375. private Transform eye_L;
  376. [SerializeField]
  377. private Transform eye_L_F;
  378. [SerializeField]
  379. private Transform eye_R;
  380. [SerializeField]
  381. private Transform eye_R_F;
  382. [SerializeField]
  383. private Transform thunderL;
  384. [SerializeField]
  385. private Transform thunderR;
  386. [SerializeField]
  387. private Transform core;
  388. public GameObject halo_L;
  389. public GameObject halo_R;
  390. private EnemyBaseHurt _baseHurt;
  391. private PlayerAnimEventListener _animEventListener;
  392. }