using UnityEngine;

namespace Marro.PacManUdon
{
    public partial class GameManager
    {
        private void TimeSequenceStepIntermission3(int sequenceProgress)
        {
            var blinky = ghostManager.Ghosts[0];

            switch (sequenceProgress)
            {
                case 0:
                    PrepareForCutscene();
                    
                    // Show just level display
                    statusDisplay.SetLevelDisplayVisible(true);
                    break;
                case 1:
                    // Start animation, pacman running and blinky prepared to chase
                    soundManager.SuppressSound(false);
                    soundManager.StartIntermissionSound();

                    pacMan.SetLevel(4);
                    pacMan.SetPowerPellet(false); // Update speed
                    pacMan.SetKinematic(true);
                    pacMan.SetActive(true);
                    pacMan.SetPosition(intermissionScreenElements[0].transform.localPosition);
                    pacMan.SetDirectionAndTargetDirection(Direction.Left);

                    ghostManager.SetLevel(5);
                    ghostManager.SetKinematic(true);
                    ghostManager.gameObject.SetActive(true);
                    blinky.SetElroy(2);
                    blinky.SetPosition(intermissionScreenElements[1].transform.localPosition);
                    blinky.SetDirectionAndTargetDirection(Direction.Left);
                    blinky.SetState(PacManGhostState.Normal);
                    blinky.SetSpecialLook(true);
                    
                    SetFrozen(false);
                    break;
                case 2:
                    // Start blinky chasing
                    blinky.SetActive(true);
                    break;
                case 3:
                    // Reached end, freeze
                    pacMan.SetDirectionAndTargetDirection(Direction.Zero);
                    blinky.SetDirectionAndTargetDirection(Direction.Zero);
                    break;
                case 4:
                    // Ghost runs back on screen
                    blinky.SetPosition(intermissionScreenElements[3].transform.localPosition);
                    blinky.SetDirectionAndTargetDirection(Direction.Right);
                    break;
                case 5:
                    // End cutscene
                    SetFrozen(true);
                    break;
            }
        }

        private void TimeSequenceFinalizeIntermission3()
        {
            soundManager.StopAllSound();
        }

        private void TimeSequenceFinishedIntermission3()
        {
            StartTimeSequence(PacManTimeSequence.StartNewLevel);
        }
    }
}
