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