Exemplo n.º 1
0
 public static int?GetPressedButtonId()
 {
     for (int index = 0; index < SdlGamePad.devices.Length; ++index)
     {
         IntPtr device = SdlGamePad.GetDevice((PlayerIndex)index);
         for (int button = 0; button < Sdl.SDL_JoystickNumButtons(device); ++button)
         {
             if ((int)Sdl.SDL_JoystickGetButton(device, button) > 0)
             {
                 return(new int?(button));
             }
         }
     }
     return(new int?());
 }
Exemplo n.º 2
0
 public static void Cleanup()
 {
     if (SdlGamePad.running)
     {
         for (int index = 0; index < SdlGamePad.GetPadCount(); ++index)
         {
             IntPtr device = SdlGamePad.GetDevice((PlayerIndex)index);
             if (Sdl.SDL_JoystickOpened(Sdl.SDL_JoystickIndex(device)) == 1)
             {
                 Sdl.SDL_JoystickClose(device);
             }
         }
     }
     SdlGamePad.running = false;
 }
Exemplo n.º 3
0
        private static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone)
        {
            IntPtr    device = SdlGamePad.GetDevice(index);
            PadConfig config = SdlGamePad.GetConfig(index);

            if (device == IntPtr.Zero || config == null)
            {
                return(GamePadState.InitializedState);
            }
            Vector2            vector2_1   = config.LeftStick.ReadAxisPair(device);
            Vector2            vector2_2   = config.RightStick.ReadAxisPair(device);
            GamePadThumbSticks thumbSticks = new GamePadThumbSticks(new Vector2(vector2_1.X, vector2_1.Y), new Vector2(vector2_2.X, vector2_2.Y));

            thumbSticks.ApplyDeadZone(deadZone, 0.27f);
            GamePadTriggers triggers = new GamePadTriggers(config.LeftTrigger.ReadFloat(device), config.RightTrigger.ReadFloat(device));
            GamePadButtons  buttons  = new GamePadButtons(SdlGamePad.ReadButtons(device, config, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, 0.27f) | SdlGamePad.TriggerToButton(triggers.Left, Buttons.LeftTrigger, 0.27f) | SdlGamePad.TriggerToButton(triggers.Right, Buttons.RightTrigger, 0.27f));
            GamePadDPad     dPad     = new GamePadDPad(buttons.buttons);

            return(new GamePadState(thumbSticks, triggers, buttons, dPad));
        }
Exemplo n.º 4
0
        public static GamePadCapabilities GetCapabilities(PlayerIndex playerIndex)
        {
            IntPtr    device = SdlGamePad.GetDevice(playerIndex);
            PadConfig config = SdlGamePad.GetConfig(playerIndex);

            if (config == null || (config.JoystickName == null || config.JoystickName == string.Empty) && device == IntPtr.Zero)
            {
                return(new GamePadCapabilities());
            }
            return(new GamePadCapabilities()
            {
                IsConnected = device != IntPtr.Zero,
                HasAButton = config.Button_A.Type != InputType.None,
                HasBButton = config.Button_B.Type != InputType.None,
                HasXButton = config.Button_X.Type != InputType.None,
                HasYButton = config.Button_Y.Type != InputType.None,
                HasBackButton = config.Button_Back.Type != InputType.None,
                HasStartButton = config.Button_Start.Type != InputType.None,
                HasDPadDownButton = config.Dpad.Down.Type != InputType.None,
                HasDPadLeftButton = config.Dpad.Left.Type != InputType.None,
                HasDPadRightButton = config.Dpad.Right.Type != InputType.None,
                HasDPadUpButton = config.Dpad.Up.Type != InputType.None,
                HasLeftShoulderButton = config.Button_LB.Type != InputType.None,
                HasRightShoulderButton = config.Button_RB.Type != InputType.None,
                HasLeftStickButton = config.LeftStick.Press.Type != InputType.None,
                HasRightStickButton = config.RightStick.Press.Type != InputType.None,
                HasLeftTrigger = config.LeftTrigger.Type != InputType.None,
                HasRightTrigger = config.RightTrigger.Type != InputType.None,
                HasLeftXThumbStick = config.LeftStick.X.Type != InputType.None,
                HasLeftYThumbStick = config.LeftStick.Y.Type != InputType.None,
                HasRightXThumbStick = config.RightStick.X.Type != InputType.None,
                HasRightYThumbStick = config.RightStick.Y.Type != InputType.None,
                HasLeftVibrationMotor = false,
                HasRightVibrationMotor = false,
                HasVoiceSupport = false,
                HasBigButton = false
            });
        }