Ejemplo n.º 1
0
        /// <summary>
        ///   Lets the game respond to player input. Unlike the Update method,
        ///   this will only be called when the gameplay screen is active.
        /// </summary>
        public override void HandleInput(InputState input)
        {
            if (input == null)
            {
                throw new ArgumentNullException("input");
            }

            // Mouse handle
            var curMouseState = Mouse.GetState();

            if (curMouseState.LeftButton == ButtonState.Pressed)
            {
                _mousePoint = _chessBoard.GetMatrixPosition(new Point(curMouseState.X, curMouseState.Y), 30);
            }


            // Look up inputs for the active player profile.
            if (ControllingPlayer != null)
            {
                var playerIndex = (int)ControllingPlayer.Value;

                var keyboardState = input.CurrentKeyboardStates[playerIndex];

                // The game pauses either if the user presses the pause button, or if
                // they unplug the active gamepad. This requires us to keep track of
                // whether a gamepad was ever plugged in, because we don't want to pause
                // on PC if they are playing with a keyboard and have no gamepad at all!

                if (input.IsPauseGame(ControllingPlayer))
                {
                    ScreenManager.AddScreen(new PauseMenuScreen(), ControllingPlayer);
                }
                else
                {
                    // Otherwise move the player position.
                    var movement = Vector2.Zero;

                    if (keyboardState.IsKeyDown(Keys.Left))
                    {
                        movement.X--;
                    }

                    if (keyboardState.IsKeyDown(Keys.Right))
                    {
                        movement.X++;
                    }

                    if (keyboardState.IsKeyDown(Keys.Up))
                    {
                        movement.Y--;
                    }

                    if (keyboardState.IsKeyDown(Keys.Down))
                    {
                        movement.Y++;
                    }

                    if (movement.Length() > 1)
                    {
                        movement.Normalize();
                    }

                    _playerPosition += movement * 2;
                }
                // Mouse
            }
        }