//private void HandleInput() //{ // KeyboardState keyboardState = Keyboard.GetState(); // GamePadState gamepadState = GamePad.GetState(PlayerIndex.One); // bool buttonTouched = false; // bool continuePressed = // keyboardState.IsKeyDown(Keys.Space) || // gamepadState.IsButtonDown(ContinueButton) || buttonTouched; // // Perform the appropriate action to advance the game and // // to get the player back to playing. // if (!wasContinuePressed && continuePressed) // { // if (!game.Player.IsAlive) // { // LoadNewGame(); // } // //ReloadCurrentLevel(); // } // wasContinuePressed = continuePressed; //} /// <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"); // Look up inputs for the active player profile. int playerIndex = 0; KeyboardState keyboardState = input.CurrentKeyboardStates[playerIndex]; KeyboardState prevKeyboardState = input.LastKeyboardStates[playerIndex]; GamePadState gamePadState = input.CurrentGamePadStates[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! bool gamePadDisconnected = !gamePadState.IsConnected && input.GamePadWasConnected[playerIndex]; if (input.IsPauseGame(ControllingPlayer) || gamePadDisconnected) { ScreenManager.AddScreen(new PauseMenuScreen(), ControllingPlayer); } else if (keyboardState.IsKeyDown(Keys.P) && !prevKeyboardState.IsKeyDown(Keys.P)){ ScreenManager.AddScreen(new BuildPopupScreen(game), ControllingPlayer); } else { // Otherwise move the player position, etc etc... Vector2 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++; Vector2 thumbstick = gamePadState.ThumbSticks.Left; movement.X += thumbstick.X; movement.Y -= thumbstick.Y; if (movement.Length() > 1) movement.Normalize(); playerPosition += movement * 2; } }
/// <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"); // Look up inputs for the active player profile. int playerIndex = 0; KeyboardState keyboardState = input.CurrentKeyboardStates[playerIndex]; KeyboardState prevKeyboardState = input.LastKeyboardStates[playerIndex]; GamePadState gamePadState = input.CurrentGamePadStates[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! bool gamePadDisconnected = !gamePadState.IsConnected && input.GamePadWasConnected[playerIndex]; if (input.IsPauseGame(ControllingPlayer) || gamePadDisconnected) { ScreenManager.AddScreen(new PauseMenuScreen(), ControllingPlayer); } else if (keyboardState.IsKeyDown(Keys.P) && !prevKeyboardState.IsKeyDown(Keys.P)) { this.ExitScreen(); } else { //if (keyboardState.IsKeyDown(Keys.Escape)) // this.ExitScreen(); } controls.UpdateInput(input); }