using System.Collections; using UnityEngine; public class TRB_PreProject_SchoolOutside : MonoBehaviour { [Header("-= Cutscene References =-")] [SerializeField] private CameraManager playerCamera; [SerializeField] private Animator Toriel; [SerializeField] private Animator TorielCar; [SerializeField] private Animator Noelle; [SerializeField] private Animator Berdly; [SerializeField] private Animator Susie; [SerializeField] private PlayerManager Kris; [Header("- Dialogue -")] [SerializeField] private CHATBOXTEXT[] CutsceneChats; [Header("- Sounds -")] [SerializeField] private AudioClip[] CutsceneSounds; [Header("- Walking Positions -")] [SerializeField] private Vector2[] TorielCar_WalkPositions_PullIn; [SerializeField] private string[] TorielCar_WalkPositions_PullIn_Directions; [SerializeField] private Vector2[] Toriel_WalkPositions_WalkAroundCar; [SerializeField] private Vector2[] Toriel_WalkPositions_WalkAroundCar_Directions; [SerializeField] private Vector2[] NoelleBerdly_WalkPositions_HeadInside; [SerializeField] private Vector2[] NoelleBerdly_WalkPositions_HeadInside_Directions; [SerializeField] private Vector2 Susie_WalkPositions_RunToKris; private void Start() { LightworldMenu.Instance.CanOpenMenu = false; DarkworldMenu.Instance.CanOpenMenu = false; Kris = PlayerManager.Instance; Toriel.SetBool("InCutscene", value: true); Noelle.SetBool("InCutscene", value: true); Susie.SetBool("InCutscene", value: true); Kris._PMove.AnimationOverriden = true; Kris._PMove._anim.SetBool("MOVING", value: false); RotateNoelleToDirection(Vector2.down); Noelle.Play("IdleBooks"); Susie.Play("TRBNotepad_Idle"); Berdly.Play("IdlePosterBoard"); RotateSusieToDirection(Vector2.up); RotateBerdlyToDirection(Vector2.right); StartCoroutine(Cutscene()); } private IEnumerator Cutscene() { yield return new WaitForSeconds(0.5f); CutsceneUtils.MoveTransformSmooth(playerCamera.transform, new Vector3(10f, 2.025f, -10f), 5f); for (int i = 0; i < TorielCar_WalkPositions_PullIn.Length; i++) { while ((Vector2)TorielCar.transform.position != TorielCar_WalkPositions_PullIn[i]) { TorielCar.Play(TorielCar_WalkPositions_PullIn_Directions[i]); TorielCar.transform.position = Vector3.MoveTowards(TorielCar.transform.position, TorielCar_WalkPositions_PullIn[i], 4.5f * Time.deltaTime); yield return null; } } CutsceneUtils.PlaySound(CutsceneSounds[0]); TorielCar.Play(TorielCar_WalkPositions_PullIn_Directions[1], -1, 0f); TorielCar.speed = 0f; RotateBerdlyToDirection(Vector2.left); yield return new WaitForSeconds(1f); Toriel.transform.position = TorielCar.transform.position + new Vector3(0f, -1f); RotateTorielToDirection(Vector2.left); Toriel.Play("WalkBag"); Toriel.speed = 0.5f; Kris.transform.position = TorielCar.transform.position; Kris._PMove.RotatePlayerAnim(Vector2.right); Kris._PMove._anim.SetBool("MOVING", value: true); Kris._PMove._anim.speed = 0.5f; CutsceneUtils.MoveTransformLinear(Kris.transform, TorielCar.transform.position + new Vector3(3f, 0f), 1f); CutsceneUtils.MoveTransformLinear(Toriel.transform, TorielCar.transform.position + new Vector3(-2f, -1f), 1f); yield return new WaitForSeconds(0.25f); CutsceneUtils.PlaySound(CutsceneSounds[1]); yield return new WaitForSeconds(0.75f); TorielCar.GetComponent().sortingLayerID = SortingLayer.NameToID("BelowPlayer"); Kris._PMove._anim.SetBool("MOVING", value: false); Kris._PMove._anim.speed = 1f; Toriel.speed = 1f; for (int i = 0; i < Toriel_WalkPositions_WalkAroundCar.Length; i++) { while ((Vector2)Toriel.transform.position != Toriel_WalkPositions_WalkAroundCar[i]) { RotateTorielToDirection(Toriel_WalkPositions_WalkAroundCar_Directions[i]); Toriel.transform.position = Vector3.MoveTowards(Toriel.transform.position, Toriel_WalkPositions_WalkAroundCar[i], 3f * Time.deltaTime); yield return null; } } Toriel.Play("IdleBag"); Toriel.speed = 1f; RotateTorielToDirection(Vector2.right); RotateBerdlyToDirection(Vector2.right); yield return new WaitForSeconds(0.5f); CutsceneUtils.RunFreshChat(CutsceneChats[0], 0, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { if (ChatboxManager.Instance.CurrentTextIndex == 4) { RotateSusieToDirection(Vector2.left); RotateNoelleToDirection(Vector2.left); } else if (ChatboxManager.Instance.CurrentTextIndex == 5) { RotateBerdlyToDirection(Vector2.left); } yield return null; } yield return new WaitForSeconds(0.5f); CutsceneUtils.RunFreshChat(CutsceneChats[0], 1, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { if (ChatboxManager.Instance.CurrentTextIndex == 2) { RotateBerdlyToDirection(Vector2.right); RotateNoelleToDirection(Vector2.down); } else { RotateBerdlyToDirection(Vector2.left); RotateNoelleToDirection(Vector2.left); } yield return null; } yield return new WaitForSeconds(0.5f); CutsceneUtils.RunFreshChat(CutsceneChats[0], 2, ForcePosition: true, OnBottom: true); RotateBerdlyToDirection(Vector2.right); RotateNoelleToDirection(Vector2.left); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { if (ChatboxManager.Instance.CurrentTextIndex == 3) { RotateNoelleToDirection(Vector2.down); RotateSusieToDirection(Vector2.up); } yield return null; } yield return new WaitForSeconds(0.25f); Noelle.Play("WalkBooks"); for (int i = 0; i < NoelleBerdly_WalkPositions_HeadInside.Length; i++) { while ((Vector2)Noelle.transform.position != NoelleBerdly_WalkPositions_HeadInside[i]) { RotateNoelleToDirection(NoelleBerdly_WalkPositions_HeadInside_Directions[i]); Noelle.transform.position = Vector3.MoveTowards(Noelle.transform.position, NoelleBerdly_WalkPositions_HeadInside[i], 3f * Time.deltaTime); yield return null; } } Noelle.GetComponent().enabled = false; CutsceneUtils.PlaySound(CutsceneSounds[2]); Berdly.Play("WalkPosterBoard"); CutsceneUtils.MoveTransformLinear(Berdly.transform, NoelleBerdly_WalkPositions_HeadInside[0], 3.5f); yield return new WaitForSeconds(3.5f); RotateBerdlyToDirection(Vector2.right); Berdly.Play("IdlePosterBoard"); RotateSusieToDirection(Vector2.up); CutsceneUtils.RunFreshChat(CutsceneChats[0], 3, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { yield return null; } Berdly.Play("WalkPosterBoard"); CutsceneUtils.MoveTransformLinear(Berdly.transform, NoelleBerdly_WalkPositions_HeadInside[1], 2f); yield return new WaitForSeconds(2f); Berdly.GetComponent().enabled = false; CutsceneUtils.PlaySound(CutsceneSounds[2]); yield return new WaitForSeconds(2f); Susie.Play("Susie_TRB_NotepadShock"); CutsceneUtils.RunFreshChat(CutsceneChats[0], 4, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { yield return null; } RotateSusieToDirection(Vector2.left); Susie.Play("TRBNotepad_Walk"); CutsceneUtils.MoveTransformLinear(Susie.transform, Susie_WalkPositions_RunToKris, 0.5f); yield return new WaitForSeconds(0.5f); Susie.Play("TRBNotepad_Idle"); CutsceneUtils.RunFreshChat(CutsceneChats[0], 5, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { if (ChatboxManager.Instance.CurrentTextIndex == 3) { RotateSusieToDirection(Vector2.right); } yield return null; } Susie.Play("TRBNotepad_Idle"); RotateSusieToDirection(Vector2.up); yield return new WaitForSeconds(1f); RotateSusieToDirection(Vector2.left); CutsceneUtils.RunFreshChat(CutsceneChats[0], 6, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { yield return null; } UI_FADE.Instance.StartFadeIn(-1, 1f); MusicManager.StopSong(Fade: true, 1f); yield return new WaitForSeconds(3f); CutsceneUtils.PlaySound(CutsceneSounds[3]); playerCamera.transform.position = new Vector3(64f, 0f, -10f); UI_FADE.Instance.StartFadeOut(5f); yield return new WaitForSeconds(1.5f); CutsceneUtils.RunFreshChat(CutsceneChats[1], 0, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { yield return null; } CutsceneUtils.PlaySound(CutsceneSounds[4]); yield return new WaitForSeconds(1f); MusicManager.PlaySong(CutsceneSounds[5], FadePreviousSong: false, 0f); MusicManager.Instance.source.pitch = 1.2f; CutsceneUtils.RunFreshChat(CutsceneChats[1], 1, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { yield return null; } yield return new WaitForSeconds(2f); MusicManager.StopSong(Fade: true, 2f); MusicManager.Instance.source.pitch = 1f; CutsceneUtils.RunFreshChat(CutsceneChats[1], 2, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { yield return null; } yield return new WaitForSeconds(2f); CutsceneUtils.RunFreshChat(CutsceneChats[1], 3, ForcePosition: true, OnBottom: true); while (ChatboxManager.Instance.ChatIsCurrentlyRunning) { yield return null; } UI_FADE.Instance.StartFadeIn(47, 3f); } private void RotateTorielToDirection(Vector2 direction) { CutsceneUtils.RotateCharacterToDirection(Toriel, "VelocityX", "VelocityY", direction); } private void RotateSusieToDirection(Vector2 direction) { CutsceneUtils.RotateCharacterToDirection(Susie, "VelocityX", "VelocityY", direction); } private void RotateBerdlyToDirection(Vector2 direction) { CutsceneUtils.RotateCharacterToDirection(Berdly, "VelocityX", "VelocityY", direction); } private void RotateNoelleToDirection(Vector2 direction) { CutsceneUtils.RotateCharacterToDirection(Noelle, "VelocityX", "VelocityY", direction); } }