using System.Collections;
using UnityEngine;

public class EOTDREWRITE_FountainRoom : MonoBehaviour
{
    public int CutsceneIndex;

    [Header("-- Cutscene References --")]
    [SerializeField]
    private CameraManager PlayerCamera;

    [Header("Characters")]
    [SerializeField]
    private PlayerManager Kris;

    [SerializeField]
    private Susie_Follower Susie;

    [SerializeField]
    private Susie_Follower Ralsei;

    [Header("Character Positions")]
    [SerializeField]
    private Transform SusieStartPos;

    [SerializeField]
    private Transform RalseiStartPos;

    [Header("UI")]
    [SerializeField]
    private GameObject CutsceneFade;

    [Header("-- Cutscene Settings --")]
    [SerializeField]
    private AudioClip Music_Fountain;

    [SerializeField]
    private AudioClip Music_Friendship;

    [SerializeField]
    private CHATBOXTEXT[] CutsceneChats;

    private void Start()
    {
        Kris = PlayerManager.Instance;
        IncrementCutsceneIndex();
        StartCoroutine(Cutscene());
    }

    private void Update()
    {
        if (CutsceneIndex > 0)
        {
            Kris._PlayerState = PlayerManager.PlayerState.Cutscene;
            DarkworldMenu.Instance.CanOpenMenu = false;
        }
    }

    public void IncrementCutsceneIndex()
    {
        CutsceneIndex++;
    }

    private IEnumerator Cutscene()
    {
        yield return null;
        Susie = PartyMemberSystem.Instance.HasMemberInParty(PartyMemberSystem.Instance.Default_SusieDarkworld).PartyMemberFollowSettings;
        Ralsei = PartyMemberSystem.Instance.HasMemberInParty(PartyMemberSystem.Instance.Default_Ralsei).PartyMemberFollowSettings;
        Susie.transform.position = new Vector2(-8f, 0.092f);
        Ralsei.transform.position = new Vector2(-8f, -2.5f);
        if (Susie == null)
        {
            MonoBehaviour.print("Susie Missing?");
        }
        if (Ralsei == null)
        {
            MonoBehaviour.print("Ralsei Missing?");
        }
        Susie.transform.Find("Shadow").gameObject.SetActive(value: true);
        Ralsei.transform.Find("Shadow").gameObject.SetActive(value: true);
        if (PlayerPrefs.GetInt("EOTD_FinishedArgueCutscene", 0) == 0)
        {
            Susie.FollowingEnabled = false;
            Ralsei.FollowingEnabled = false;
            Susie.transform.position = SusieStartPos.position;
            Ralsei.transform.position = RalseiStartPos.position;
            Susie.RotateSusieToDirection(Vector2.right);
            Ralsei.RotateSusieToDirection(Vector2.down);
            PlayerManager.Instance._PMove.RotatePlayerAnim(Vector2.left);
            CameraManager.instance.transform.position = new Vector3(Ralsei.transform.position.x, CameraManager.instance.transform.position.y, CameraManager.instance.transform.position.z);
            CutsceneIndex = 1;
            PlayerPrefs.SetInt("EOTD_FinishedArgueCutscene", 1);
            MusicManager.PlaySong(Music_Fountain, FadePreviousSong: false, 0f);
            yield return new WaitForSeconds(0.5f);
            yield return new WaitForSeconds(0.5f);
            CutsceneUtils.RunFreshChat(CutsceneChats[0], 0, ForcePosition: true, OnBottom: true);
            DEBUG_EnableMarkiplier.ChangeMarkiplierState(DEBUG_EnableMarkiplier.MarkiplierEmotions.Shock);
            while (CutsceneIndex != 2)
            {
                yield return null;
            }
            SusieIdle_Up();
            KrisIdle_Up();
            yield return new WaitForSeconds(1f);
            UI_FADE.Instance.StartFadeOut(0.35f);
            CutsceneFade.SetActive(value: false);
            DEBUG_EnableMarkiplier.ChangeMarkiplierState(DEBUG_EnableMarkiplier.MarkiplierEmotions.Horror);
            yield return new WaitForSeconds(2f);
            CutsceneUtils.RunFreshChat(CutsceneChats[0], 1, ForcePosition: true, OnBottom: false);
            while (CutsceneIndex != 3)
            {
                yield return null;
            }
            DEBUG_EnableMarkiplier.ChangeMarkiplierState(DEBUG_EnableMarkiplier.MarkiplierEmotions.Crying);
            while (PlayerCamera.transform.position.x != Kris.transform.position.x)
            {
                yield return null;
                Vector3 target = new Vector3(Kris.transform.position.x, PlayerCamera.transform.position.y, PlayerCamera.transform.position.z);
                PlayerCamera.transform.position = Vector3.MoveTowards(PlayerCamera.transform.position, target, 3f * Time.deltaTime);
            }
            PlayerCamera.FollowPlayerX = true;
            CutsceneIndex = 0;
            Kris.ResetToGameState();
            Susie.FollowingEnabled = true;
            Ralsei.FollowingEnabled = true;
            DarkworldMenu.Instance.CanOpenMenu = true;
            PlayerPrefs.SetInt("EOTD_FinishedArgueCutscene", 1);
        }
        else
        {
            CutsceneFade.SetActive(value: false);
            MusicManager.PlaySong(Music_Friendship, FadePreviousSong: false, 0f);
            CutsceneIndex = 0;
            PlayerCamera.FollowPlayerX = true;
            CutsceneIndex = 0;
            Kris.ResetToGameState();
            Susie.FollowingEnabled = true;
            Ralsei.FollowingEnabled = true;
            DarkworldMenu.Instance.CanOpenMenu = true;
            Kris.transform.position = new Vector2(-7.95f, -1.35f);
            Susie.transform.position = Kris.transform.position;
            Ralsei.transform.position = Kris.transform.position;
        }
    }

    public void SusieIdle_Right()
    {
        Susie.SusieAnimator.Play("Idle");
        Susie.RotateSusieToDirection(Vector2.right);
    }

    public void SusieIdle_Up()
    {
        Susie.SusieAnimator.Play("Idle");
        Susie.RotateSusieToDirection(Vector2.up);
    }

    public void SusieConfident_Right()
    {
        Susie.SusieAnimator.Play("SusieDarkworld_Proud_Right");
    }

    public void RalseiIdle_Down()
    {
        Ralsei.SusieAnimator.Play("Idle");
        Ralsei.RotateSusieToDirection(Vector2.down);
    }

    public void RalseiIdle_Up()
    {
        Ralsei.SusieAnimator.Play("Idle");
        Ralsei.RotateSusieToDirection(Vector2.up);
    }

    public void RalseiIdleBlush_Down()
    {
        Ralsei.SusieAnimator.Play("Ralsei_Blush_Down");
    }

    public void KrisIdle_Up()
    {
        Kris._PMove.RotatePlayerAnim(Vector2.up);
    }

    public void KrisIdle_Left()
    {
        Kris._PMove.RotatePlayerAnim(Vector2.left);
    }
}