DRHPS/code-csharp/en_US/TRB_PreProject_SchoolOutside.cs
2025-04-08 11:31:35 +08:00

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);
}
}