SpiderBossAnimEvent.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. using System;
  2. using System.Collections;
  3. using GameWorld;
  4. using LitJson;
  5. using UnityEngine;
  6. public class SpiderBossAnimEvent : 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<SpiderBossAction>();
  18. this._eAttr = base.GetComponent<EnemyAttribute>();
  19. this._enemyAtk = base.GetComponentInChildren<EnemyAtk>();
  20. this._baseHurt = base.GetComponent<EnemyBaseHurt>();
  21. }
  22. private void Start()
  23. {
  24. this._jsonData = SingletonMono<EnemyDataPreload>.Instance.attack[EnemyType.愚笨蜘蛛];
  25. }
  26. public void ChangeState(SpiderBossAction.StateEnum sta)
  27. {
  28. this._action.AnimChangeState(sta, 1f);
  29. }
  30. public void SetAtkData()
  31. {
  32. this._enemyAtk.atkData = this._jsonData[this._action.stateMachine.currentState];
  33. this.SetAtkId();
  34. }
  35. public void SetAtkId()
  36. {
  37. this._enemyAtk.atkId = Incrementor.GetNextId();
  38. }
  39. public void SummonSpider()
  40. {
  41. base.StartCoroutine(this.SummonSpiderCoroutine());
  42. }
  43. private IEnumerator SummonSpiderCoroutine()
  44. {
  45. int count = (R.GameData.Difficulty > 1) ? 5 : 4;
  46. for (int i = 0; i < count; i++)
  47. {
  48. if (this._action.stateMachine.currentState != "Atk4")
  49. {
  50. yield break;
  51. }
  52. Vector2 pos = new Vector2(UnityEngine.Random.Range(GameArea.EnemyRange.xMin + 3f, GameArea.EnemyRange.xMax - 3f), base.transform.position.y);
  53. GameObject spider = Singleton<EnemyGenerator>.Instance.GenerateEnemy(EnemyType.蜘蛛, new Vector2?(pos), true, true);
  54. spider.GetComponent<EnemyAttribute>().playerInView = true;
  55. yield return new WaitForSeconds(0.1f);
  56. }
  57. yield break;
  58. }
  59. public void BackToIdle()
  60. {
  61. if (this._action.IsInWeakSta())
  62. {
  63. this._eAttr.enterWeakMod = false;
  64. this._action.AnimChangeState(SpiderBossAction.StateEnum.IdleToWeakMod, 1f);
  65. }
  66. else
  67. {
  68. this._action.AnimChangeState(SpiderBossAction.StateEnum.Idle, 1f);
  69. }
  70. }
  71. public IEnumerator WeakOver()
  72. {
  73. for (int i = 0; i < 115; i++)
  74. {
  75. if (this._action.stateMachine.currentState == "WeakMod" && !this._action.IsInWeakSta())
  76. {
  77. this._action.AnimChangeState(SpiderBossAction.StateEnum.WeakModToIdle, 1f);
  78. }
  79. yield return new WaitForFixedUpdate();
  80. }
  81. yield break;
  82. }
  83. public void DestroySelf()
  84. {
  85. R.Enemy.RemoveEnemy(this._eAttr);
  86. }
  87. public void QTEHurtShadeAtk()
  88. {
  89. Transform transform = R.Effect.Generate(177, null, base.transform.position, default(Vector3), default(Vector3), true);
  90. Vector3 one = Vector3.one;
  91. one.x *= (float)this._eAttr.faceDir;
  92. transform.localScale = one;
  93. }
  94. public void QTEHurtShadeAtkBack()
  95. {
  96. Transform transform = R.Effect.Generate(177, null, base.transform.position, default(Vector3), default(Vector3), true);
  97. Vector3 one = Vector3.one;
  98. one.x *= (float)(-(float)this._eAttr.faceDir);
  99. transform.localScale = one;
  100. }
  101. public void QTEHurtPlayerHitGround()
  102. {
  103. this.player.position = base.transform.position + Vector3.up * 5f + Vector3.right * (float)this._eAttr.faceDir * 1.5f;
  104. int dir = InputSetting.JudgeDir(this.player.transform.position, base.transform.position);
  105. R.Player.Action.TurnRound(dir);
  106. R.Player.Action.ChangeState(PlayerAction.StateEnum.QTEHitGround, 1f);
  107. }
  108. public void QTEFinalHurt()
  109. {
  110. EnemyHurtAtkEventArgs args = new EnemyHurtAtkEventArgs(base.gameObject, EnemyHurtAtkEventArgs.HurtTypeEnum.QTEHurt);
  111. EventManager.PostEvent<Transform, EnemyHurtAtkEventArgs>("EnemyHurtAtk", this.player, args);
  112. }
  113. public void QTEEffect()
  114. {
  115. this._baseHurt.HitEffect(this._baseHurt.center.localPosition, "Atk1");
  116. R.Camera.Controller.CameraShake(0.2f, 0.2f, CameraController.ShakeTypeEnum.Rect, false);
  117. R.Audio.PlayEffect(255, new Vector3?(base.transform.position));
  118. }
  119. public void QTEDieShadeAtk(int times)
  120. {
  121. Vector3 one = Vector3.one;
  122. switch (times)
  123. {
  124. case 1:
  125. {
  126. Transform transform = R.Effect.Generate(177, null, this.leg1.position, default(Vector3), default(Vector3), true);
  127. one.x *= (float)this._eAttr.faceDir;
  128. transform.localScale = one;
  129. break;
  130. }
  131. case 2:
  132. {
  133. Transform transform = R.Effect.Generate(177, null, this.leg1.position, default(Vector3), default(Vector3), true);
  134. one.x *= (float)(-(float)this._eAttr.faceDir);
  135. transform.localScale = one;
  136. break;
  137. }
  138. case 3:
  139. {
  140. Transform transform = R.Effect.Generate(177, null, this.leg1.position, default(Vector3), default(Vector3), true);
  141. one.x *= (float)this._eAttr.faceDir;
  142. transform.localScale = one;
  143. break;
  144. }
  145. case 4:
  146. {
  147. Transform transform = R.Effect.Generate(177, null, this.leg1.position, default(Vector3), default(Vector3), true);
  148. one.x *= (float)(-(float)this._eAttr.faceDir);
  149. transform.localScale = one;
  150. break;
  151. }
  152. }
  153. }
  154. public void QTEDieEffect(int times)
  155. {
  156. R.Audio.PlayEffect(255, new Vector3?(base.transform.position));
  157. switch (times)
  158. {
  159. case 1:
  160. this._baseHurt.HitEffect(this.leg1.localPosition, "Atk1");
  161. break;
  162. case 2:
  163. this._baseHurt.HitEffect(this.leg2.localPosition, "Atk1");
  164. break;
  165. case 3:
  166. this._baseHurt.HitEffect(this.leg3.localPosition, "Atk1");
  167. break;
  168. case 4:
  169. this._baseHurt.HitEffect(this.leg4.localPosition, "Atk1");
  170. break;
  171. }
  172. R.Camera.Controller.CameraShake(0.2f, 0.2f, CameraController.ShakeTypeEnum.Rect, false);
  173. }
  174. public void QTEDieHitGround()
  175. {
  176. this.player.transform.position = base.transform.position + Vector3.up * 5f + Vector3.right * (float)this._eAttr.faceDir * 1.5f;
  177. int dir = InputSetting.JudgeDir(this.player.transform.position, base.transform.position);
  178. R.Player.Action.TurnRound(dir);
  179. R.Player.Action.ChangeState(PlayerAction.StateEnum.QTEHitGround, 1f);
  180. }
  181. public void ExecuteFinalHurt()
  182. {
  183. EnemyHurtAtkEventArgs args = new EnemyHurtAtkEventArgs(base.gameObject, EnemyHurtAtkEventArgs.HurtTypeEnum.Execute, string.Empty);
  184. EventManager.PostEvent<GameObject, EnemyHurtAtkEventArgs>("EnemyHurtAtk", this.player.gameObject, args);
  185. }
  186. public void PlayAudio(int id)
  187. {
  188. R.Audio.PlayEffect(id, new Vector3?(base.transform.position));
  189. }
  190. private SpiderBossAction _action;
  191. private EnemyAttribute _eAttr;
  192. private JsonData _jsonData;
  193. [SerializeField]
  194. private Transform leg1;
  195. [SerializeField]
  196. private Transform leg2;
  197. [SerializeField]
  198. private Transform leg3;
  199. [SerializeField]
  200. private Transform leg4;
  201. private EnemyAtk _enemyAtk;
  202. private EnemyBaseHurt _baseHurt;
  203. }