/// <summary> /// Responds to user input, changing the selected entry and accepting /// or canceling the menu. /// </summary> public override void HandleInput(InputState input) { // Move to the previous menu entry? if (input.MenuUp) { _selectedEntry--; if (_selectedEntry < 0) _selectedEntry = _menuEntries.Count - 1; } // Move to the next menu entry? if (input.MenuDown) { _selectedEntry++; if (_selectedEntry >= _menuEntries.Count) _selectedEntry = 0; } // Accept or cancel the menu? if (input.MenuSelect) { OnSelectEntry(_selectedEntry); } }
public override void HandleInput(InputState input) { if (FirstRun) { ScreenManager.AddScreen(new PauseScreen(GetTitle(), GetDetails(), this)); FirstRun = false; } if (input.PauseGame) { ScreenManager.AddScreen(new PauseScreen(GetTitle(), GetDetails(), this)); } if (input.CurrentGamePadState.IsConnected) { HandleGamePadInput(input); } else { HandleKeyboardInput(input); #if !XBOX HandleMouseInput(input); #endif } base.HandleInput(input); }
private void HandleGamePadInput(InputState input) { Vector2 force = 50 * input.CurrentGamePadState.ThumbSticks.Left; force.Y = -force.Y; _rectangleBody.ApplyForce(force); float rotation = -1000 * input.CurrentGamePadState.Triggers.Left; _rectangleBody.ApplyTorque(rotation); rotation = 1000 * input.CurrentGamePadState.Triggers.Right; _rectangleBody.ApplyTorque(rotation); }
/// <summary> /// Allows the screen to handle user input. Unlike Update, this method /// is only called when the screen is active, and not when some other /// screen has taken the focus. /// </summary> public virtual void HandleInput(InputState input) { //Xbox if (input.LastGamePadState.Buttons.Y != ButtonState.Pressed && input.CurrentGamePadState.Buttons.Y == ButtonState.Pressed) { _debugViewEnabled = !_debugViewEnabled; _physicsSimulator.EnableDiagnostics = _debugViewEnabled; } //Windows if (!input.LastKeyboardState.IsKeyDown(Keys.F1) && input.CurrentKeyboardState.IsKeyDown(Keys.F1)) { _debugViewEnabled = !_debugViewEnabled; _physicsSimulator.EnableDiagnostics = _debugViewEnabled; } }
private void HandleMouseInput(InputState input) { Vector2 point = new Vector2(input.CurrentMouseState.X, input.CurrentMouseState.Y); if (input.LastMouseState.LeftButton == ButtonState.Released && input.CurrentMouseState.LeftButton == ButtonState.Pressed) { //create mouse spring _pickedGeom = PhysicsSimulator.Collide(point); if (_pickedGeom != null) { _mousePickSpring = SpringFactory.Instance.CreateFixedLinearSpring(PhysicsSimulator, _pickedGeom.Body, _pickedGeom.Body. GetLocalPosition(point), point, 20, 10); } } else if (input.LastMouseState.LeftButton == ButtonState.Pressed && input.CurrentMouseState.LeftButton == ButtonState.Released) { //destroy mouse spring if (_mousePickSpring != null && _mousePickSpring.IsDisposed == false) { _mousePickSpring.Dispose(); _mousePickSpring = null; } } //move anchor point if (input.CurrentMouseState.LeftButton == ButtonState.Pressed && _mousePickSpring != null) { _mousePickSpring.WorldAttachPoint = point; } }
private void HandleKeyboardInput(InputState input) { const float forceAmount = 1000; Vector2 force = Vector2.Zero; force.Y = -force.Y; if (input.CurrentKeyboardState.IsKeyDown(Keys.A)) { force += new Vector2(-forceAmount, 0); } if (input.CurrentKeyboardState.IsKeyDown(Keys.S)) { force += new Vector2(0, forceAmount); } if (input.CurrentKeyboardState.IsKeyDown(Keys.D)) { force += new Vector2(forceAmount, 0); } if (input.CurrentKeyboardState.IsKeyDown(Keys.W)) { force += new Vector2(0, -forceAmount); } _agent.ApplyForce(force); const float torqueAmount = 14000; float torque = 0; if (input.CurrentKeyboardState.IsKeyDown(Keys.Left)) { torque -= torqueAmount; } if (input.CurrentKeyboardState.IsKeyDown(Keys.Right)) { torque += torqueAmount; } _agent.ApplyTorque(torque); }
public override void HandleInput(InputState input) { if (input.CurrentKeyboardState.IsKeyDown(Keys.Escape)) ScreenManager.Game.Exit(); base.HandleInput(input); }