StoryE18P3.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. using System;
  2. using System.Collections;
  3. using DG.Tweening;
  4. using GameWorld;
  5. using I2.Loc;
  6. using UnityEngine;
  7. public class StoryE18P3 : BaseBehaviour
  8. {
  9. private bool killTrinity
  10. {
  11. get
  12. {
  13. return RoundStorage.Get("E18_KillTrinity", false);
  14. }
  15. }
  16. private bool e18Dahal
  17. {
  18. get
  19. {
  20. return RoundStorage.Get("E18_Dahal", false);
  21. }
  22. set
  23. {
  24. RoundStorage.Set("E18_Dahal", value);
  25. }
  26. }
  27. private void Start()
  28. {
  29. if (!this.e18Dahal)
  30. {
  31. this.E18DahalStory();
  32. }
  33. }
  34. private void OnEnable()
  35. {
  36. EventManager.RegisterEvent<EventArgs>("EnemyKilled", new EventManager.FBEventHandler<EventArgs>(this.EnemyDie), EventManager.ListenerQueue.Game);
  37. }
  38. private void OnDisable()
  39. {
  40. EventManager.UnregisterEvent<EventArgs>("EnemyKilled", new EventManager.FBEventHandler<EventArgs>(this.EnemyDie), EventManager.ListenerQueue.Game);
  41. }
  42. private void OnDestroy()
  43. {
  44. CameraFilterUtils.Remove<CameraFilterPack_TV_Artefact>(null);
  45. CameraFilterUtils.Remove<CameraFilterPack_TV_Chromatical2>(null);
  46. }
  47. private bool EnemyDie(string eventDefine, object sender, EventArgs msg)
  48. {
  49. GameArea.CameraRange.xMin = GameArea.MapRange.min.x;
  50. GameArea.CameraRange.xMax = GameArea.MapRange.max.x;
  51. GameArea.PlayerRange.xMin = GameArea.MapRange.min.x;
  52. GameArea.PlayerRange.xMax = GameArea.MapRange.max.x;
  53. this._battleZoneGateL.DisAppear();
  54. this._battleZoneGateR.DisAppear();
  55. R.SceneData.CanAIRun = false;
  56. R.Mode.EnterMode(Mode.AllMode.Normal);
  57. return true;
  58. }
  59. private void E18DahalStory()
  60. {
  61. this.e18Dahal = true;
  62. if (this.killTrinity)
  63. {
  64. base.StartCoroutine(this.P3CoroutineKill());
  65. }
  66. else
  67. {
  68. base.StartCoroutine(this.P3CoroutineNotKill());
  69. }
  70. }
  71. private IEnumerator P3CoroutineKill()
  72. {
  73. R.Audio.PlayBGM(287, true);
  74. GameObject dahal = Singleton<EnemyGenerator>.Instance.GenerateEnemy(EnemyType.达哈尔终极版, new Vector2?(this.spwanPoint.position), false, true);
  75. yield return base.StartCoroutine(this.PlayerMove());
  76. R.Camera.Controller.IsFollowPivot = false;
  77. R.Camera.Controller.CameraMoveTo(new Vector2(this.spwanPoint.position.x, R.Camera.Controller.MovableCamera.position.y), 1.5f, Ease.Linear);
  78. yield return new WaitForSeconds(2f);
  79. R.Camera.Controller.CameraMoveTo(new Vector2(R.Player.Transform.position.x, R.Camera.Controller.MovableCamera.position.y), 1f, Ease.Linear);
  80. yield return new WaitForSeconds(3f);
  81. R.Camera.Controller.IsFollowPivot = true;
  82. InputSetting.Resume(false);
  83. this._battleZoneGateL.Appear();
  84. this._battleZoneGateR.Appear();
  85. GameArea.EnemyRange.xMin = this._battleZoneGateL.transform.Find("PlayerLimitPosLX").transform.position.x + 1f;
  86. GameArea.EnemyRange.xMax = this._battleZoneGateR.transform.Find("PlayerLimitPosRX").transform.position.x - 1f;
  87. GameArea.PlayerRange.xMin = this._battleZoneGateL.transform.Find("PlayerLimitPosLX").transform.position.x;
  88. GameArea.PlayerRange.xMax = this._battleZoneGateR.transform.Find("PlayerLimitPosRX").transform.position.x;
  89. GameArea.CameraRange.xMin = this._battleZoneGateL.transform.Find("CameraLimitPosLX").transform.position.x;
  90. GameArea.CameraRange.xMax = this._battleZoneGateR.transform.Find("CameraLimitPosRX").transform.position.x;
  91. R.SceneData.CanAIRun = true;
  92. yield return R.Audio.PlayVoiceOver("e18t21", null, false);
  93. yield break;
  94. }
  95. private IEnumerator P3CoroutineNotKill()
  96. {
  97. this.gate1.openType = SceneGate.OpenType.None;
  98. this.gate2.openType = SceneGate.OpenType.None;
  99. this.dahalThanks.SetActive(true);
  100. yield return base.StartCoroutine(this.PlayerMove());
  101. R.Camera.Controller.IsFollowPivot = false;
  102. R.Camera.Controller.CameraMoveTo(new Vector2(this.spwanPoint.position.x, R.Camera.Controller.MovableCamera.position.y), 1.5f, Ease.Linear);
  103. yield return new WaitForSeconds(1.5f);
  104. this.dahalThanks.GetComponent<SkeletonAnimation>().state.SetAnimation(0, "IdleToThanks", false);
  105. this.dahalThanks.GetComponent<SkeletonAnimation>().state.AddAnimation(0, "Thanks", true, 0f);
  106. yield return new WaitForSeconds(1f);
  107. R.Camera.Controller.CameraMoveTo(new Vector2(R.Player.Transform.position.x, R.Camera.Controller.MovableCamera.position.y), 1f, Ease.Linear);
  108. yield return new WaitForSeconds(2f);
  109. R.Camera.Controller.IsFollowPivot = true;
  110. InputSetting.Resume(false);
  111. CameraFilterUtils.Create<CameraFilterPack_TV_Artefact>(null);
  112. yield return R.Audio.PlayVoiceOver("e18t17", null, false);
  113. R.Ui.Toast.Show(ScriptLocalization.Story.e18s3, 2f, true);
  114. yield return R.Audio.PlayVoiceOver("e18t18", null, false);
  115. CameraFilterUtils.Remove<CameraFilterPack_TV_Artefact>(null);
  116. yield return R.Audio.PlayVoiceOver("e18t19", null, false);
  117. CameraFilterUtils.Create<CameraFilterPack_TV_Chromatical2>(null);
  118. R.Ui.Toast.Show(ScriptLocalization.Story.e18s4, 2f, true);
  119. yield return new WaitForSeconds(3f);
  120. CameraFilterUtils.Remove<CameraFilterPack_TV_Chromatical2>(null);
  121. yield return R.Audio.PlayVoiceOver("e18t20", null, false);
  122. R.Trophy.AwardTrophy(20);
  123. this.gate2.openType = SceneGate.OpenType.Right;
  124. yield break;
  125. }
  126. private IEnumerator PlayerMove()
  127. {
  128. yield return new WaitForSeconds(0.1f);
  129. R.Player.Action.TurnRound(-1);
  130. InputSetting.Stop(false);
  131. R.Player.ActionController.StartMove();
  132. while (R.Player.Transform.position.x - this.playerStop.position.x > 0f)
  133. {
  134. yield return null;
  135. }
  136. R.Player.ActionController.StopMove();
  137. yield break;
  138. }
  139. [SerializeField]
  140. private SceneGate gate1;
  141. [SerializeField]
  142. private SceneGate gate2;
  143. [SerializeField]
  144. private Transform spwanPoint;
  145. [SerializeField]
  146. private Transform playerStop;
  147. [SerializeField]
  148. private GameObject dahalThanks;
  149. [SerializeField]
  150. private BattleZoneGate _battleZoneGateL;
  151. [SerializeField]
  152. private BattleZoneGate _battleZoneGateR;
  153. }