Example #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");

            //// Look up inputs for the active player profile.
            //int playerIndex = (int)ControllingPlayer.Value;

            //KeyboardState keyboardState = input.CurrentKeyboardStates[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
            //{
            //    // Otherwise move the player position.
            //    Vector2 movement = Vector2.Zero;

            //    if (keyboardState.IsKeyDown(Keys.A))
            //        movement.X--;

            //    if (keyboardState.IsKeyDown(Keys.D))
            //        movement.X++;

            //    if (keyboardState.IsKeyDown(Keys.W))
            //        movement.Y--;

            //    if (keyboardState.IsKeyDown(Keys.S))
            //        movement.Y++;

            //    Vector2 thumbstick = gamePadState.ThumbSticks.Left;

            //    movement.X += thumbstick.X;
            //    movement.Y -= thumbstick.Y;

            //    if (movement.Length() > 1)
            //        movement.Normalize();

            //    playerPosition += movement * 2;
            //}
            if (input == null)
                throw new ArgumentNullException("input");

            // Look up inputs for the active player profile.
            int playerIndex = (int)ControllingPlayer.Value;

            KeyboardState keyboardState = input.CurrentKeyboardStates[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
            {
                // Otherwise move the player position.
                Vector2 movement = Vector2.Zero;

                if (keyboardState.IsKeyDown(Keys.W))
                {
                    if (OtherKeysUp(keyboardState, Keys.W))
                        soundInstance.Play();
                    movement.Y--;
                }
                if (keyboardState.IsKeyDown(Keys.S))
                {
                    if (OtherKeysUp(keyboardState, Keys.S))
                        soundInstance.Play();
                    movement.Y++;
                }
                if (keyboardState.IsKeyDown(Keys.A))
                {
                    if (OtherKeysUp(keyboardState, Keys.A))
                        soundInstance.Play();
                    movement.X--;
                }
                if (keyboardState.IsKeyDown(Keys.D))
                {
                    if (OtherKeysUp(keyboardState, Keys.D))
                        soundInstance.Play();
                    movement.X++;
                }
                if (keyboardState.IsKeyDown(Keys.Up))
                {
                    if (OtherKeysUp(keyboardState, Keys.Up))
                        soundInstance.Play();
                    movement.Y--;
                }
                if (keyboardState.IsKeyDown(Keys.Down))
                {
                    if (OtherKeysUp(keyboardState, Keys.Down))
                        soundInstance.Play();
                    movement.Y++;
                }
                if (keyboardState.IsKeyDown(Keys.Left))
                {
                    if (OtherKeysUp(keyboardState, Keys.Left))
                        soundInstance.Play();
                    movement.X--;
                }
                if (keyboardState.IsKeyDown(Keys.Right))
                {
                    if (OtherKeysUp(keyboardState, Keys.Right))
                        soundInstance.Play();
                    movement.X++;
                }
                if (keyboardState.IsKeyDown(Keys.RightControl))
                {
                    if (OtherKeysUp(keyboardState, Keys.RightControl) || keyboardState.IsKeyDown(Keys.W) || keyboardState.IsKeyDown(Keys.Up)
                        || keyboardState.IsKeyDown(Keys.S) || keyboardState.IsKeyDown(Keys.Down) || keyboardState.IsKeyDown(Keys.A)
                        || keyboardState.IsKeyDown(Keys.Left) || keyboardState.IsKeyDown(Keys.D) || keyboardState.IsKeyDown(Keys.Right))
                        plasmarayInstance.Play();
                }
                if (keyboardState.IsKeyUp(Keys.W) && OtherKeysUp(keyboardState, Keys.W))
                    soundInstance.Stop();
                if (keyboardState.IsKeyUp(Keys.Up) && OtherKeysUp(keyboardState, Keys.Up))
                    soundInstance.Stop();
                if (keyboardState.IsKeyUp(Keys.S) && OtherKeysUp(keyboardState, Keys.S))
                    soundInstance.Stop();
                if (keyboardState.IsKeyUp(Keys.Down) && OtherKeysUp(keyboardState, Keys.Down))
                    soundInstance.Stop();
                if (keyboardState.IsKeyUp(Keys.A) && OtherKeysUp(keyboardState, Keys.A))
                    soundInstance.Stop();
                if (keyboardState.IsKeyUp(Keys.Left) && OtherKeysUp(keyboardState, Keys.Left))
                    soundInstance.Stop();
                if (keyboardState.IsKeyUp(Keys.D) && OtherKeysUp(keyboardState, Keys.D))
                    soundInstance.Stop();
                if (keyboardState.IsKeyUp(Keys.Right) && OtherKeysUp(keyboardState, Keys.Right))
                    soundInstance.Stop();
                if (keyboardState.IsKeyUp(Keys.RightControl) && (OtherKeysUp(keyboardState, Keys.RightControl) || keyboardState.IsKeyDown(Keys.W) || keyboardState.IsKeyDown(Keys.Up)
                        || keyboardState.IsKeyDown(Keys.S) || keyboardState.IsKeyDown(Keys.Down) || keyboardState.IsKeyDown(Keys.A)
                        || keyboardState.IsKeyDown(Keys.Left) || keyboardState.IsKeyDown(Keys.D) || keyboardState.IsKeyDown(Keys.Right)))
                    plasmarayInstance.Stop();
                Vector2 thumbstick = gamePadState.ThumbSticks.Left;

                movement.X += thumbstick.X;
                movement.Y -= thumbstick.Y;

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

                playerPosition += movement * 2;
            }
        }