public Dictionary <Keys, ICommand> GetKeyboardMappings(IGameState gameState)
        {
            PauseGameState gameStateCast = (PauseGameState)gameState;

            return(new Dictionary <Keys, ICommand>
            {
                { Keys.Escape, new ResumeGameCommand(gameState) },
                { Keys.W, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Up) },
                { Keys.D, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Right) },
                { Keys.S, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Down) },
                { Keys.A, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Left) },
                { Keys.Enter, new SelectButtonCommand(gameStateCast.PauseGameMenu.ButtonSelector, GetButtonMappings(gameState)) },
                { Keys.Space, new SelectButtonCommand(gameStateCast.PauseGameMenu.ButtonSelector, GetButtonMappings(gameState)) },
                { Keys.I, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Up) },
                { Keys.L, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Right) },
                { Keys.K, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Down) },
                { Keys.J, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Left) },
            });
        }
        private Dictionary <Buttons, ICommand> GetGamepadMappings(IGameState gameState)
        {
            PauseGameState gameStateCast     = (PauseGameState)gameState;
            ICommand       resumeGameCommand = new ResumeGameCommand(gameState);

            return(new Dictionary <Buttons, ICommand>
            {
                { Buttons.Start, resumeGameCommand },
                { Buttons.B, resumeGameCommand },
                { Buttons.LeftThumbstickUp, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Up) },
                { Buttons.LeftThumbstickRight, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Right) },
                { Buttons.LeftThumbstickDown, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Down) },
                { Buttons.LeftThumbstickLeft, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Left) },
                { Buttons.DPadUp, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Up) },
                { Buttons.DPadRight, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Right) },
                { Buttons.DPadDown, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Down) },
                { Buttons.DPadLeft, new MoveSelectorCommand(gameStateCast.PauseGameMenu, Constants.Direction.Left) },
                { Buttons.A, new SelectButtonCommand(gameStateCast.PauseGameMenu.ButtonSelector, GetButtonMappings(gameState)) }
            });
        }