public GameStateManager(MainGame mainGame, GraphicsDevice graphicsDevice)
        {
            gameStates = new Dictionary<StateType, GameState>();
            gameStates[StateType.MENU] = new MenuState(this);
            gameStates[StateType.LOBBY] = new LobbyState(this);
            gameStates[StateType.CONTROLS] = new ControlsState(this);
            gameStates[StateType.OPTIONS] = new OptionsState(this);
            gameStates[StateType.WINSCREEN] = new WinScreenState(this);
            gameStates[StateType.TIESCREEN] = new TieScreenState(this);
            gameStates[StateType.GAME] = new GameplayState(this, graphicsDevice);

            currentState = gameStates[StateType.MENU];

            screenTransition = new Drawing.ScreenTransitionInOut();
            toTransitionNext = StateType.NONE;
            stateTransitioningTo = StateType.NONE;

            this.mainGame = mainGame;
        }
        public void SwapState(StateType state)
        {
            //Don't transition to nothing
            if (state == StateType.NONE) return;

            if (currentState != null)
            {
                currentState.Exit();
            }

            Managers.ParticleManager.ClearAll();

            currentState = gameStates[state];

            currentState.Enter();
        }