286 lines
12 KiB
C#
286 lines
12 KiB
C#
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<SpriteRenderer>().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<SpriteRenderer>().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<SpriteRenderer>().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);
|
|
}
|
|
}
|