public override void OnGamePadChange(GamePadChangeEventArgs args) { var newCursorPos = Vector2.Zero; var playerIndexes = Enum.GetValues(typeof(PlayerIndex)).Cast <PlayerIndex>(); foreach (var playerIndex in playerIndexes) { var comparison = args.StateComparisions[playerIndex]; GamePadButtonStateComparision buttonState; if (comparison.ButtonComparisions.TryGetValue(Buttons.RightStick, out buttonState) && buttonState.Changed) { var stickPos = Game.InputState.CurrentState.GamePad[playerIndex].ThumbSticks.Right; newCursorPos.X += stickPos.X; newCursorPos.Y -= stickPos.Y; args.Handled = true; } } cursorPos = newCursorPos; // ignore Back button for close //base.OnGamePadChange(args); }
public override void OnGamePadChange(GamePadChangeEventArgs args) { var playerIndexes = Enum.GetValues(typeof(PlayerIndex)).Cast <PlayerIndex>(); foreach (var playerIndex in playerIndexes) { var comparison = args.StateComparisions[playerIndex]; GamePadButtonStateComparision buttonState; if (comparison.ButtonComparisions.TryGetValue(Buttons.DPadUp, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed) { var oldScrollPos = _browserForm.GetVerticalScrollPosition(); var scrollPos = Math.Max(0, oldScrollPos - _scrollStrength); if (oldScrollPos != scrollPos) { _browserForm.SetVerticalScrollPosition(scrollPos); } args.Handled = true; } if (comparison.ButtonComparisions.TryGetValue(Buttons.DPadDown, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed) { var scrollPos = _browserForm.GetVerticalScrollPosition() + _scrollStrength; _browserForm.SetVerticalScrollPosition(scrollPos); args.Handled = true; this.Log().Info("DPadDown Time unchanged: {0}", buttonState.TimeUnchanged); } if (comparison.ButtonComparisions.TryGetValue(Buttons.A, out buttonState) && buttonState.Changed) { var cursorPos = new Vector2( Game.InputState.CurrentState.Mouse.X, Game.InputState.CurrentState.Mouse.Y); // browser form offset if (buttonState.CurrentState == ButtonState.Pressed && buttonState.OldState == ButtonState.Released) { Game.InvokeMouseDown(MouseButtons.Left); args.Handled = true; } else if (buttonState.CurrentState == ButtonState.Released && buttonState.OldState == ButtonState.Pressed) { if (Game.InputState.OldState.Mouse.LeftButton == ButtonState.Pressed || Game.InputState.CurrentState.Mouse.LeftButton == ButtonState.Pressed) { Game.InvokeMouseUp(MouseButtons.Left); //_browserForm.InvokeClick(cursorPos); args.Handled = true; } } } } base.OnGamePadChange(args); }
private void GamePadChange_Callback(GamePadChangeEventArgs args) { if (!IsActive) { return; } foreach (var pair in args.StateComparisions) { var playerIndex = pair.Key; var comparison = args.StateComparisions[playerIndex]; foreach (var s in comparison.ButtonComparisions.Select(x => x.Value)) { if (!s.Changed) { continue; } Debug(string.Format("GamePadChange_Callback() Player:{3}, Button:{0}, Old:{1}, New:{2}", s.Button, s.OldState, s.CurrentState, s.Player)); if (s.Button == Buttons.LeftStick) { AppendNewMouseVelocity(s, Vector2.Zero); } if (s.Button == Buttons.A && s.Changed) { if (s.CurrentState == ButtonState.Pressed && s.OldState == ButtonState.Released) { this.InvokeMouseDown(MouseButtons.Left); } else if (s.CurrentState == ButtonState.Released && s.OldState == ButtonState.Pressed) { if (InputState.OldState.Mouse.LeftButton == ButtonState.Pressed || InputState.CurrentState.Mouse.LeftButton == ButtonState.Pressed) { this.InvokeMouseUp(MouseButtons.Left); } } } } } ScreenManager._InvokeGamePadChange(args); }
public virtual void OnGamePadChange(GamePadChangeEventArgs args) { var playerIndexes = Enum.GetValues(typeof(PlayerIndex)).Cast <PlayerIndex>(); foreach (var playerIndex in playerIndexes) { var comparison = args.StateComparisions[playerIndex]; var buttonComparisons = comparison.ButtonComparisions; GamePadButtonStateComparision buttonState; if (buttonComparisons.TryGetValue(Buttons.Back, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed) { ExitScreen(); args.Handled = true; // todo: Handled for each button change } } }
internal void _InvokeGamePadChange(GamePadChangeEventArgs args) { var screens = GetScreens().ToList(); screens = screens.Where(x => x.ScreenState == ScreenState.Active).ToList(); //if (!inherit) // screens = screens.Where(x => x.IsActive).ToList(); screens.Reverse(); foreach (var screen in screens) { if (args.Handled) { break; } screen._InvokeGamePadChange(args); //break; // only focused screen should recieve input } }
public override void OnGamePadChange(GamePadChangeEventArgs args) { var playerIndexes = Enum.GetValues(typeof(PlayerIndex)).Cast <PlayerIndex>(); foreach (var playerIndex in playerIndexes) { var comparison = args.StateComparisions[playerIndex]; // todo: support holding down the button for X milliseconds GamePadButtonStateComparision buttonState; if (comparison.ButtonComparisions.TryGetValue(Buttons.DPadLeft, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed) { SelectLeft(); args.Handled = true; } if (comparison.ButtonComparisions.TryGetValue(Buttons.DPadRight, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed) { SelectRight(); args.Handled = true; } if (comparison.ButtonComparisions.TryGetValue(Buttons.A, out buttonState) && buttonState.OldState == ButtonState.Released && buttonState.CurrentState == ButtonState.Pressed) { if (_hoveredItemSprite != null) { OpenItem(_hoveredItemSprite); } else { OpenItem(_focusedItemSprite); } args.Handled = true; } } base.OnGamePadChange(args); }
internal void _InvokeGamePadChange(GamePadChangeEventArgs args) { OnGamePadChange(args); }