public void Update(ref ApplicationState appState, InputState input, PlayerIndex[] controllingPlayer)
        {
            base.Update(input, controllingPlayer);

            if (confirm == true)
            {
                switch (quitScreen.Update(input, controllingPlayer))
                {
                case 1: appState = ApplicationState.InitaliseApp;
                    break;

                case 0: confirm = false;
                    menuIndex   = 1;
                    return;
                }
            }

            if (selectedIndex == 0 || (input.IsNewButtonPress(ButtonMappings.Pad_BBtn, controllingPlayer[0], out controllingPlayer[1]) ||
                                       input.IsNewKeyPress(ButtonMappings.Keyboard_BBtn, controllingPlayer[0], out controllingPlayer[1])))
            {
                menuIndex = 0;
                appState  = ApplicationState.Playing;
            }
            else if (selectedIndex == 1)
            {
                confirm = true;
                quitScreen.Reset();
            }
        }
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            // TODO: Add your update logic here
            input.Update();
            switch (appState)
            {
            case ApplicationState.Splash:       splashScreen.Update(ref appState, input, ref controllingPlayer);
                break;

            case ApplicationState.InitaliseApp: break;

            case ApplicationState.Home:         homeScreen.Update(ref appState, input, controllingPlayer);
                break;

            case ApplicationState.Options:      optionsScreen.Update(ref appState, input, controllingPlayer);
                break;

            case ApplicationState.Quit:
            {
                switch (quitScreen.Update(input, controllingPlayer))
                {
                case 0: appState = ApplicationState.InitaliseApp;
                    break;

                case 1:    this.Exit();
                    break;
                }
                break;
            }

            case ApplicationState.Trial:        trialScreen.Update(ref appState, input, controllingPlayer);
                break;

            case ApplicationState.GameOver:     gameOverScreen.Update(gameState.GetFinalLevel(), gameState.GetFinalScore(), ref appState, input, controllingPlayer);
                break;

            case ApplicationState.GameComplete: break;

            case ApplicationState.InitaliseGame: MediaPlayer.Stop();
                break;

            //ApplicationState.Playing || ApplicationState.Paused || ApplicationState.LevelComplete
            default:                            gameState.Update(gameTime, ref appState, input, controllingPlayer);
                break;
            }
            if (appState == ApplicationState.InitaliseGame)
            {
                gameState.Initialize(this);
                appState = ApplicationState.Playing;
            }

            if (appState == ApplicationState.InitaliseApp)
            {
                MediaPlayer.IsRepeating = true;
                MediaPlayer.Volume      = 0.20f;
                MediaPlayer.Play(this.Content.Load <Song>("Audio\\Music\\Start"));
                homeScreen.Reset();
                trialScreen.Reset();
                gameOverScreen.Reset();
                appState = ApplicationState.Home;
            }

            gameOptions.IsTrial = Guide.IsTrialMode;
            base.Update(gameTime);
        }