using System.Collections;
using UnityEngine;

public class LivingRoom_AfterBerdlySansCutscene : MonoBehaviour
{
    [Header("References")]
    [SerializeField]
    private int cutsceneIndex;

    [SerializeField]
    private Vector3[] KrisCutscenePositions;

    [SerializeField]
    private Vector3[] SusieCutscenePositions;

    [SerializeField]
    private Vector3[] SansCutscenePositions;

    [Space(5f)]
    [SerializeField]
    private Susie_Follower Susie;

    [SerializeField]
    private GameObject Sans;

    [SerializeField]
    private Animator SansAnimator;

    [Space(5f)]
    [SerializeField]
    private INT_Chat CutsceneChatter;

    [SerializeField]
    private CHATBOXTEXT[] CutsceneChats;

    [Space(5f)]
    [SerializeField]
    private SpriteRenderer ComicBookRenderer;

    [SerializeField]
    private Sprite ComicSwanSprite;

    [SerializeField]
    private TRIG_LEVELTRANSITION LevelTransition;

    private void Start()
    {
        SetComicBook();
    }

    private void Update()
    {
        if (cutsceneIndex != 0)
        {
            PlayerManager.Instance._PlayerState = PlayerManager.PlayerState.Cutscene;
            LightworldMenu.Instance.CanOpenMenu = false;
            CutsceneUpdate();
        }
    }

    private void SetComicBook()
    {
        if (PlayerPrefs.GetInt("PapyrusMeet_ComicSwan", 0) == 1)
        {
            ComicBookRenderer.sprite = ComicSwanSprite;
        }
    }

    private void CutsceneUpdate()
    {
        switch (cutsceneIndex)
        {
            case 1:
                Susie.FollowingEnabled = false;
                Susie.AnimationOverriden = true;
                if (PlayerManager.Instance.transform.position != KrisCutscenePositions[0])
                {
                    PlayerManager.Instance.transform.position = Vector3.MoveTowards(PlayerManager.Instance.transform.position, KrisCutscenePositions[0], 1f * Time.deltaTime);
                    PlayerManager.Instance._PMove.AnimationOverriden = true;
                    PlayerManager.Instance._PMove._anim.SetBool("MOVING", value: true);
                    PlayerManager.Instance._PMove._anim.SetFloat("MOVEMENTX", 0f);
                    PlayerManager.Instance._PMove._anim.SetFloat("MOVEMENTY", -1f);
                    PlayerManager.Instance._PMove.RotatePlayerAnim(new Vector2(0f, -1f));
                }
                if (Susie.transform.position != SusieCutscenePositions[0])
                {
                    Susie.transform.position = Vector3.MoveTowards(Susie.transform.position, SusieCutscenePositions[0], 1f * Time.deltaTime);
                    Susie.AnimationOverriden = true;
                    Susie.SusieAnimator.SetFloat("VelocityX", 0f);
                    Susie.SusieAnimator.SetFloat("VelocityY", -1f);
                    Susie.SusieAnimator.SetFloat("VelocityMagnitude", 100f);
                }
                if (Susie.transform.position == SusieCutscenePositions[0])
                {
                    Susie.SusieAnimator.SetFloat("VelocityX", 0f);
                    Susie.SusieAnimator.SetFloat("VelocityY", 0f);
                    Susie.SusieAnimator.SetFloat("VelocityMagnitude", 0f);
                    Susie.RotateSusieToDirection(new Vector2(1f, 0f));
                }
                if (PlayerManager.Instance.transform.position == KrisCutscenePositions[0])
                {
                    PlayerManager.Instance._PMove._anim.SetBool("MOVING", value: false);
                    PlayerManager.Instance._PMove._anim.Play("OVERWORLD_NOELLE_IDLE");
                    PlayerManager.Instance._PMove.RotatePlayerAnim(new Vector2(1f, 0f));
                }
                if (Susie.transform.position == SusieCutscenePositions[0] && PlayerManager.Instance.transform.position == KrisCutscenePositions[0])
                {
                    SansAnimator.Play("Idle");
                    SansAnimator.SetFloat("MOVEMENTX", -1f);
                    SansAnimator.SetFloat("MOVEMENTY", 0f);
                    CutsceneChatter.Text = CutsceneChats[0];
                    CutsceneChatter.CurrentIndex = 0;
                    CutsceneChatter.CanUse = true;
                    CutsceneChatter.FirstTextPlayed = false;
                    CutsceneChatter.FinishedText = false;
                    CutsceneChatter.RUN();
                    cutsceneIndex = 2;
                }
                break;
            case 3:
                if (PlayerManager.Instance.transform.position != KrisCutscenePositions[1])
                {
                    PlayerManager.Instance.transform.position = Vector3.MoveTowards(PlayerManager.Instance.transform.position, KrisCutscenePositions[1], 3f * Time.deltaTime);
                    PlayerManager.Instance._PMove.AnimationOverriden = true;
                    PlayerManager.Instance._PMove._anim.SetBool("MOVING", value: true);
                    PlayerManager.Instance._PMove._anim.SetFloat("MOVEMENTX", 0f);
                    PlayerManager.Instance._PMove._anim.SetFloat("MOVEMENTY", -1f);
                    PlayerManager.Instance._PMove.RotatePlayerAnim(new Vector2(0f, -1f));
                }
                if (Susie.transform.position != SusieCutscenePositions[1])
                {
                    Susie.transform.position = Vector3.MoveTowards(Susie.transform.position, SusieCutscenePositions[1], 3f * Time.deltaTime);
                    Susie.AnimationOverriden = true;
                    Susie.SusieAnimator.SetFloat("VelocityX", 0f);
                    Susie.SusieAnimator.SetFloat("VelocityY", -1f);
                    Susie.SusieAnimator.SetFloat("VelocityMagnitude", 100f);
                }
                if (Susie.transform.position == SusieCutscenePositions[1])
                {
                    Susie.SusieAnimator.SetFloat("VelocityX", 0f);
                    Susie.SusieAnimator.SetFloat("VelocityY", 0f);
                    Susie.SusieAnimator.SetFloat("VelocityMagnitude", 0f);
                    Susie.RotateSusieToDirection(new Vector2(0f, 1f));
                }
                if (PlayerManager.Instance.transform.position == KrisCutscenePositions[1])
                {
                    PlayerManager.Instance._PMove._anim.SetBool("MOVING", value: false);
                    PlayerManager.Instance._PMove._anim.Play("OVERWORLD_NOELLE_IDLE");
                    PlayerManager.Instance._PMove.RotatePlayerAnim(new Vector2(0f, 1f));
                }
                break;
            case 4:
                PlayerManager.Instance._PMove._anim.SetBool("MOVING", value: false);
                PlayerManager.Instance._PMove._anim.Play("OVERWORLD_NOELLE_IDLE");
                PlayerManager.Instance._PMove.RotatePlayerAnim(new Vector2(0f, 1f));
                Susie.SusieAnimator.SetFloat("VelocityX", 0f);
                Susie.SusieAnimator.SetFloat("VelocityY", 0f);
                Susie.SusieAnimator.SetFloat("VelocityMagnitude", 0f);
                Susie.RotateSusieToDirection(new Vector2(0f, 1f));
                cutsceneIndex = 5;
                break;
            case 6:
                if (PlayerManager.Instance.transform.position != KrisCutscenePositions[2])
                {
                    PlayerManager.Instance.transform.position = Vector3.MoveTowards(PlayerManager.Instance.transform.position, KrisCutscenePositions[2], 3f * Time.deltaTime);
                    PlayerManager.Instance._PMove.AnimationOverriden = true;
                    PlayerManager.Instance._PMove._anim.SetBool("MOVING", value: true);
                    PlayerManager.Instance._PMove._anim.SetFloat("MOVEMENTX", 1f);
                    PlayerManager.Instance._PMove._anim.SetFloat("MOVEMENTY", 0f);
                    PlayerManager.Instance._PMove.RotatePlayerAnim(new Vector2(1f, 0f));
                }
                if (Susie.transform.position != SusieCutscenePositions[1])
                {
                    Susie.transform.position = Vector3.MoveTowards(Susie.transform.position, SusieCutscenePositions[2], 3f * Time.deltaTime);
                    Susie.AnimationOverriden = true;
                    Susie.SusieAnimator.SetFloat("VelocityX", 1f);
                    Susie.SusieAnimator.SetFloat("VelocityY", 0f);
                    Susie.SusieAnimator.SetFloat("VelocityMagnitude", 100f);
                }
                break;
            case 2:
            case 5:
                break;
        }
    }

    public void BeginKrisSusieWalk()
    {
        cutsceneIndex = 3;
        StartCoroutine(DelayUntilSecondSansText());
    }

    public void EndCutscene()
    {
        cutsceneIndex = 6;
        LevelTransition.BeginTransition();
    }

    private void OnDestroy()
    {
        PlayerManager.Instance._PMove.AnimationOverriden = false;
    }

    private IEnumerator DelayUntilSecondSansText()
    {
        SansAnim_Idle_Right();
        yield return new WaitForSeconds(1.5f);
        SansAnim_Idle_Down();
        cutsceneIndex = 4;
        CutsceneChatter.Text = CutsceneChats[1];
        CutsceneChatter.CurrentIndex = 0;
        CutsceneChatter.CanUse = true;
        CutsceneChatter.FirstTextPlayed = false;
        CutsceneChatter.FinishedText = false;
        CutsceneChatter.RUN();
    }

    public void SansAnim_Idle_Down()
    {
        SansAnimator.Play("Idle");
        SansAnimator.SetFloat("MOVEMENTX", 0f);
        SansAnimator.SetFloat("MOVEMENTY", -1f);
    }

    public void SansAnim_Idle_Left()
    {
        SansAnimator.Play("Idle");
        SansAnimator.SetFloat("MOVEMENTX", -1f);
        SansAnimator.SetFloat("MOVEMENTY", 0f);
    }

    public void SansAnim_Idle_Right()
    {
        SansAnimator.Play("Idle");
        SansAnimator.SetFloat("MOVEMENTX", 1f);
        SansAnimator.SetFloat("MOVEMENTY", 0f);
    }
}