private void SetControllerForPlayer(PlayerIndex player, InputProcessorBase controller) { int controllerIndex = -1; for (int i = 0; i < _controllers.Count; i++) { if (_controllers[i] == controller) { controllerIndex = i; break; } } switch (player) { case PlayerIndex.One: _playerOneController = controllerIndex; break; case PlayerIndex.Two: _playerTwoController = controllerIndex; break; } }
private void CheckForAndHandleInputFromSingleSource(InputProcessorBase inputSource, int millisecondsSinceLastUpdate) { if ((inputSource.ProcessorType == InputProcessorBase.InputProcessorType.Keyboard) || (inputSource.ProcessorType == InputProcessorBase.InputProcessorType.Gamepad)) { CheckDirectionalMovementAndUpdateActiveButton(inputSource, millisecondsSinceLastUpdate); } CheckForAndHandleSelection(inputSource); }
private void CheckDirectionalMovementAndUpdateActiveButton(InputProcessorBase inputSource, int millisecondsSinceLastUpdate) { _millisecondsSinceLastMovement = Math.Min(_millisecondsSinceLastMovement + millisecondsSinceLastUpdate, Movement_Repeat_Time_In_Milliseconds); MovementDirection direction = MovementDirection.None; if (inputSource.MoveUp) { direction = MovementDirection.Up; } else if (inputSource.MoveDown) { direction = MovementDirection.Down; } else if (inputSource.MoveLeft) { direction = MovementDirection.Left; } else if (inputSource.MoveRight) { direction = MovementDirection.Right; } if ((direction == _lastMovementDirection) && (_millisecondsSinceLastMovement < Movement_Repeat_Time_In_Milliseconds)) { direction = MovementDirection.None; } if (direction != MovementDirection.None) { switch (direction) { case MovementDirection.Up: AttemptToActivateButton(_buttons[_activeButtonCaption].CaptionOfButtonActivatedByMovingUp); break; case MovementDirection.Down: AttemptToActivateButton(_buttons[_activeButtonCaption].CaptionOfButtonActivatedByMovingDown); break; case MovementDirection.Left: AttemptToActivateButton(_buttons[_activeButtonCaption].CaptionOfButtonActivatedByMovingLeft); break; case MovementDirection.Right: AttemptToActivateButton(_buttons[_activeButtonCaption].CaptionOfButtonActivatedByMovingRight); break; } _lastMovementDirection = direction; _millisecondsSinceLastMovement = 0; } }
public static void SetPlayerTwoController(InputProcessorBase controller) { _instance.SetControllerForPlayer(PlayerIndex.Two, controller); }