public override int HandleSelection(int currentMenu, int selectedIndex, EventOperator handler)
        {
            switch (selectedIndex)
            {
            case 0:
                handler.NewGameState = EventOperator.UPGRADE_STATE;
                handler.ResetGame(true);
                break;

            case 1:
                handler.NewGameState = EventOperator.MENU_STATE;
                handler.ResetGame(false);
                break;
            }
            return(-1);
        }
        public override int HandleSelection(int currentMenu, int selectedIndex, EventOperator handler)
        {
            switch (selectedIndex)
            {
            case 0:
                GameMode.StartingLevel = 0;
                pressedIndex           = selectedIndex;
                break;

            case 1:
                if (!isLocked[selectedIndex])
                {
                    GameMode.StartingLevel = 10;
                    pressedIndex           = selectedIndex;
                }
                break;

            case 2:
                if (!isLocked[selectedIndex])
                {
                    GameMode.StartingLevel = 20;
                    pressedIndex           = selectedIndex;
                }
                break;

            case 3:
                if (!isLocked[selectedIndex])
                {
                    GameMode.StartingLevel = 30;
                    pressedIndex           = selectedIndex;
                }
                break;

            case 4:
                if (!isLocked[selectedIndex])
                {
                    GameMode.StartingLevel = 40;
                    pressedIndex           = selectedIndex;
                }
                break;

            case 5:
                if (!isLocked[selectedIndex])
                {
                    GameMode.StartingLevel = 50;
                    pressedIndex           = selectedIndex;
                }
                break;

            case 6:
                handler.NewGameState = EventOperator.UPGRADE_STATE;
                handler.ResetGame(true);
                break;
            }
            return(-1);
        }
        internal void Draw(SpriteBatch spriteBatch, GameTime gameTime)
        {
            switch (op.NewGameState)
            {
            case EventOperator.MENU_STATE:
                #region SplashScreen
                if (op.GameState == EventOperator.SPLASH_SCREEN_STATE)
                {
                    if (InputHandler.isJustPressed(MouseButton.LEFT))
                    {
                        eventTimer.Finish();
                    }
                    else
                    {
                        int alphaChannel = (int)(455 * (SPLASHTIME - eventTimer.currentTime) / SPLASHTIME) - 100;
                        logo.MColor = new Color(255, 255, 255, alphaChannel);
                        logo.Draw(spriteBatch, gameTime);
                    }
                }
                #endregion
                #region GiveUp
                else
                {
                    op.ResetGame(false);
                    game.UpdateGame(gameTime, false);
                    game.DrawGame(spriteBatch, gameTime, false);
                    string s = "Mediocre!";     //!
                    spriteBatch.DrawOutlinedString(3, new Color(32, 32, 32), font, s, DrawHelper.CenteredWordPosition(s, font), Color.Gold);
                }
                #endregion
                break;

            case EventOperator.GAME_STATE:
                #region CountDown
                game.DrawGame(spriteBatch, gameTime, false);
                DrawCountDown(spriteBatch, gameTime);
                #endregion
                break;

            case EventOperator.GAME_OVER_STATE:
                #region GameOver Animation
                if (eventTimer.currentTime > STATSTIME)
                {
                    game.UpdateGame(gameTime, false);
                    game.DrawGame(spriteBatch, gameTime, false);
                    Vector2 shitvect = new Vector2(WindowSize.Width / 2 - font.MeasureString("GAME OVER").X / 2, WindowSize.Height / 2 - font.MeasureString("GAME OVER").Y / 2);          //previously bigFont in Game1
                    spriteBatch.DrawOutlinedString(3, new Color(32, 32, 32), font, "GAME OVER", shitvect, Color.OrangeRed);
                }
                #endregion
                #region DrawStats
                else
                {
                    SoundHandler.PlaySong((int)IDs.GAMEOVER);
                    DrawStats(spriteBatch, gameTime);
                    if (InputHandler.isJustPressed(MouseButton.LEFT))
                    {
                        eventTimer = new Timer(0);
                    }
                }
                #endregion
                break;

            case EventOperator.CUT_SCENE_STATE:
                #region Cutscenes
                switch (op.CutSceneType)
                {
                case 1:

                    BossFinishedScene(spriteBatch, gameTime);
                    break;

                case 2:
                    BossAppearanceScene(spriteBatch, gameTime);
                    break;
                }
                #endregion
                break;
            }
        }