using System.Collections;
using TMPro;
using UnityEngine;
public class CM_CreditsManager : MonoBehaviour
{
[Header("Intro Disclaimer")]
[SerializeField]
private TextMeshPro DisclaimerText;
[SerializeField]
private AudioClip DenySFX;
[SerializeField]
private AudioClip ConfirmSFX;
[SerializeField]
private AudioClip FinishConfirmSFX;
private string originalDisclaimerText;
private int remainingConfirmPresses = 3;
private bool canBeginConfirming;
[Header("Credits Intro")]
[SerializeField]
private SpriteRenderer Piano;
[SerializeField]
private Transform PianoDuplicate;
[SerializeField]
private AudioClip NoiseSFX;
[SerializeField]
private AudioClip LeafSFX;
[SerializeField]
private AudioClip PlinkSFX;
[SerializeField]
private AudioClip SusieLaughSFX;
[SerializeField]
private AudioClip Music_CreditSong;
[SerializeField]
private CHATBOXTEXT AfterCreditsDialogue;
private CameraManager PlayerCamera;
private PlayerManager Kris;
[SerializeField]
private CM_KrisPianoAnimation KrisPianoController;
[Header("Ending Cutscene")]
[SerializeField]
private Animator SusieAnimator;
[SerializeField]
private Animator RalseiAnimator;
[Header("Debug")]
private Vector3 pos1 = new Vector3(0f, 0f, 0f);
[SerializeField]
private Vector3 pos2 = new Vector3(0f, -13f, 0f);
[SerializeField]
private float ScrollSpeed;
private void Start()
{
Music_CreditSong.LoadAudioData();
originalDisclaimerText = DisclaimerText.text;
DisclaimerText.text = originalDisclaimerText;
if (PlayerPrefs.GetInt("Setting_DyslexicText", 0) == 1)
{
DisclaimerText.font = SettingsManager.Instance.DyslexicFont;
DisclaimerText.extraPadding = false;
}
StartCoroutine(Disclaimer());
PlayerCamera = CameraManager.instance;
Kris = PlayerManager.Instance;
LightworldMenu.Instance.CanOpenMenu = false;
DarkworldMenu.Instance.CanOpenMenu = false;
}
private void Update()
{
LightworldMenu.Instance.CanOpenMenu = false;
DarkworldMenu.Instance.CanOpenMenu = false;
if (canBeginConfirming)
{
if (Input.GetKeyDown(PlayerInput.Instance.Key_Confirm) && remainingConfirmPresses > 0)
{
CutsceneUtils.PlaySound(ConfirmSFX);
remainingConfirmPresses--;
DisclaimerText.text = originalDisclaimerText + $"\nPress {PlayerInput.Instance.Key_Confirm}, {remainingConfirmPresses} more times to confirm.";
}
else
{
DisclaimerText.text = originalDisclaimerText + $"\nPress {PlayerInput.Instance.Key_Confirm}, {remainingConfirmPresses} more times to confirm.";
}
}
if (GonerMenu.Instance.GonerMenuOpen)
{
if (MusicManager.Instance.source.isPlaying)
{
MusicManager.PauseMusic();
}
}
else if (!MusicManager.Instance.source.isPlaying)
{
MusicManager.ResumeMusic();
}
}
private IEnumerator Disclaimer()
{
yield return new WaitForSeconds(1f);
CutsceneUtils.PlaySound(DenySFX);
CutsceneUtils.FadeInText3D(DisclaimerText, 0.5f);
yield return new WaitForSeconds(5f);
canBeginConfirming = true;
while (remainingConfirmPresses > 0)
{
yield return null;
}
CutsceneUtils.PlaySound(FinishConfirmSFX);
CutsceneUtils.FadeOutText3D(DisclaimerText);
yield return new WaitForSeconds(3f);
StartCoroutine(Credits());
}
private IEnumerator Credits()
{
CutsceneUtils.FadeInSprite(Piano, 0.5f);
yield return new WaitForSeconds(1.5f);
Kris._PMove.RotatePlayerAnim(Vector2.up);
while (Kris.transform.position.y < 1f)
{
yield return null;
Kris.transform.position = Vector3.MoveTowards(Kris.transform.position, new Vector3(0f, 1f, 0f), 4f * Time.deltaTime);
Kris._PMove._anim.SetBool("MOVING", value: true);
}
Kris._PMove._anim.SetBool("MOVING", value: false);
yield return new WaitForSeconds(1f);
CutsceneUtils.PlaySound(NoiseSFX);
Kris.transform.position = new Vector2(0f, 2.25f);
Kris._PMove._anim.Play("Kris_CM_LWPianoNote3");
yield return new WaitForSeconds(2.5f);
if (!DRHDebugManager.instance.DebugModeEnabled)
{
KrisPianoController.PlayRecording();
}
GonerMenu.Instance.ShowMusicCredit("memphis", "puzzlerat");
MusicManager.Instance.source.loop = false;
MusicManager.PlaySong(Music_CreditSong, FadePreviousSong: false, 0f);
yield return new WaitForSeconds(9f);
while (PlayerCamera.transform.position.y != pos2.y)
{
yield return null;
PlayerCamera.transform.position = Vector3.MoveTowards(PlayerCamera.transform.position, new Vector3(0f, pos2.y, -10f), ScrollSpeed * Time.deltaTime);
if (PlayerCamera.transform.position.y <= -30f && (Vector2)Kris.transform.position != new Vector2(0f, -87.6f))
{
Kris.transform.position = new Vector2(0f, -87.6f);
Kris._PMove.InDarkworld = true;
KrisPianoController.IsDarkworldVarient = true;
ChatboxManager.Instance.InDarkworld = true;
Kris._PMove._anim.Play("Kris_CM_LWPianoNote3");
}
}
yield return new WaitForSeconds(8f);
Kris.transform.position = new Vector2(0.325f, -88.9f);
CutsceneUtils.PlaySound(LeafSFX);
Kris._PMove._anim.Play("DARKWORLD_KRIS_IDLE");
Kris._PMove.RotatePlayerAnim(Vector2.right);
yield return new WaitForSeconds(1.5f);
Kris._PMove.RotatePlayerAnim(Vector2.down);
yield return new WaitForSeconds(1f);
CutsceneUtils.RunFreshChat(AfterCreditsDialogue, 0, ForcePosition: true, OnBottom: false);
MonoBehaviour.print(MusicManager.Instance.source.time);
}
public void BeginSusieWalkToPiano()
{
StartCoroutine(SusieWalkToPiano());
CutsceneUtils.RotateCharacterToDirection(RalseiAnimator, "VelocityX", "VelocityY", Vector2.up);
}
public void RalseiSusieLookEachother()
{
SusieAnimator.Play("Idle");
CutsceneUtils.RotateCharacterToDirection(SusieAnimator, "VelocityX", "VelocityY", Vector2.right);
CutsceneUtils.RotateCharacterToDirection(RalseiAnimator, "VelocityX", "VelocityY", Vector2.left);
}
public void SusieScratchHead()
{
SusieAnimator.Play("SusieDarkworld_Scratch");
}
public void RalseiGiggle()
{
RalseiAnimator.Play("Ralsei_Laugh");
Kris._PMove.RotatePlayerAnim(Vector2.down);
}
public void FinishHypothetical()
{
LightworldMenu.Instance.CanOpenMenu = true;
DarkworldMenu.Instance.CanOpenMenu = true;
UI_FADE.Instance.StartFadeIn(37, 0.25f, UnpauseOnEnd: false, NewMainMenuManager.MainMenuStates.Hypothetical);
}
private IEnumerator SusieWalkToPiano()
{
while (SusieAnimator.transform.position.y != -89.85f)
{
yield return null;
SusieAnimator.Play("Walk");
SusieAnimator.SetFloat("VelocityMagnitude", 1f);
CutsceneUtils.RotateCharacterToDirection(SusieAnimator, "VelocityX", "VelocityY", Vector2.up);
SusieAnimator.transform.position = Vector3.MoveTowards(SusieAnimator.transform.position, new Vector2(-0.75f, -89.85f), 2f * Time.deltaTime);
Kris._PMove.RotatePlayerAnimTowardsPosition(SusieAnimator.transform.position);
}
SusieAnimator.Play("Idle");
SusieAnimator.SetFloat("VelocityMagnitude", 0f);
yield return new WaitForSeconds(0.5f);
CutsceneUtils.PlaySound(PlinkSFX);
yield return new WaitForSeconds(1.5f);
CutsceneUtils.PlaySound(SusieLaughSFX);
SusieAnimator.Play("SusieDarkworld_LaughRight");
yield return new WaitForSeconds(2f);
CutsceneUtils.RunFreshChat(AfterCreditsDialogue, 1, ForcePosition: true, OnBottom: false);
SusieAnimator.Play("Idle");
CutsceneUtils.RotateCharacterToDirection(SusieAnimator, "VelocityX", "VelocityY", Vector2.down);
}
private void OnDrawGizmos()
{
Gizmos.color = Color.red;
Gizmos.DrawWireCube(pos1, new Vector3(16.125f, 12f, 1f));
Gizmos.DrawWireCube(pos2, new Vector3(16.125f, 12f, 1f));
Gizmos.color = Color.blue;
Gizmos.DrawWireSphere(pos1, 0.5f);
Gizmos.DrawWireSphere(pos2, 0.5f);
float num = Mathf.Max(pos1.y + 6f, pos2.y + 6f);
float num2 = Mathf.Min(pos1.y - 6f, pos2.y - 6f);
float y = num - num2;
Vector3 center = new Vector3((pos1.x + pos2.x) / 2f, (num + num2) / 2f, (pos1.z + pos2.z) / 2f);
Gizmos.color = Color.green;
Gizmos.DrawWireCube(center, new Vector3(16.125f, y, 1f));
}
}