private static GamePadState PlatformGetState(int index, GamePadDeadZone leftDeadZoneMode, GamePadDeadZone rightDeadZoneMode)
        {
            var state = GamePadState.Default;
            var jcap  = Joystick.GetCapabilities(index);

            if (jcap.IsConnected)
            {
                state.IsConnected = true;

                var jstate = Joystick.GetState(index);

                if (!GamePadCache.ContainsKey(jcap.Identifier))
                {
                    GamePadCache.Add(jcap.Identifier, Configurations.ContainsKey(jcap.Identifier) ? new GamepadTranslator(Configurations[jcap.Identifier]) : new GamepadTranslator(""));
                }

                var gpc = GamePadCache[jcap.Identifier];

                Buttons buttons =
                    (gpc.ButtonPressed("a", jstate) ? Buttons.A : 0) |
                    (gpc.ButtonPressed("b", jstate) ? Buttons.B : 0) |
                    (gpc.ButtonPressed("back", jstate) ? Buttons.Back : 0) |
                    (gpc.ButtonPressed("guide", jstate) ? Buttons.BigButton : 0) |
                    (gpc.ButtonPressed("leftshoulder", jstate) ? Buttons.LeftShoulder : 0) |
                    (gpc.ButtonPressed("leftstick", jstate) ? Buttons.LeftStick : 0) |
                    (gpc.ButtonPressed("rightshoulder", jstate) ? Buttons.RightShoulder : 0) |
                    (gpc.ButtonPressed("rightstick", jstate) ? Buttons.RightStick : 0) |
                    (gpc.ButtonPressed("start", jstate) ? Buttons.Start : 0) |
                    (gpc.ButtonPressed("x", jstate) ? Buttons.X : 0) |
                    (gpc.ButtonPressed("y", jstate) ? Buttons.Y : 0) |
                    0;

                var sticks =
                    new GamePadThumbSticks(
                        new Vector2(gpc.AxisPressed("leftx", jstate), gpc.AxisPressed("lefty", jstate)),
                        new Vector2(gpc.AxisPressed("rightx", jstate), gpc.AxisPressed("righty", jstate)),
                        leftDeadZoneMode,
                        rightDeadZoneMode
                        );

                var dpad =
                    new GamePadDPad(
                        gpc.DpadPressed("dpup", jstate) ? ButtonState.Pressed : ButtonState.Released,
                        gpc.DpadPressed("dpdown", jstate) ? ButtonState.Pressed : ButtonState.Released,
                        gpc.DpadPressed("dpleft", jstate) ? ButtonState.Pressed : ButtonState.Released,
                        gpc.DpadPressed("dpright", jstate) ? ButtonState.Pressed : ButtonState.Released
                        );

                var triggers =
                    new GamePadTriggers(
                        gpc.TriggerPressed("lefttrigger", jstate),
                        gpc.TriggerPressed("righttrigger", jstate)
                        );


                state = new GamePadState(sticks, triggers, new GamePadButtons(buttons), dpad);
            }

            return(state);
        }
Esempio n. 2
0
        private static GamePadCapabilities PlatformGetCapabilities(int index)
        {
            var jcap = Joystick.GetCapabilities(index);

            if (!GamePadCache.ContainsKey(jcap.Identifier))
            {
                GamePadCache.Add(jcap.Identifier, Configurations.ContainsKey(jcap.Identifier) ? new GamepadTranslator(Configurations[jcap.Identifier]) : new GamepadTranslator(""));
            }

            var gpc = GamePadCache[jcap.Identifier];

            return(new GamePadCapabilities
            {
                IsConnected = true,
                GamePadType = GamePadType.GamePad,
                HasAButton = (gpc.Read("a").index != -1),
                HasBButton = (gpc.Read("b").index != -1),
                HasXButton = (gpc.Read("x").index != -1),
                HasYButton = (gpc.Read("y").index != -1),
                HasBackButton = (gpc.Read("back").index != -1),
                HasStartButton = (gpc.Read("start").index != -1),
                HasDPadDownButton = (gpc.Read("dpdown").index != -1),
                HasDPadLeftButton = (gpc.Read("dpleft").index != -1),
                HasDPadRightButton = (gpc.Read("dpright").index != -1),
                HasDPadUpButton = (gpc.Read("dpup").index != -1),
                HasLeftShoulderButton = (gpc.Read("leftshoulder").index != -1),
                HasRightShoulderButton = (gpc.Read("rightshoulder").index != -1),
                HasLeftStickButton = (gpc.Read("leftstick").index != -1),
                HasRightStickButton = (gpc.Read("rightstick").index != -1),
                HasLeftTrigger = (gpc.Read("lefttrigger").index != -1),
                HasRightTrigger = (gpc.Read("righttrigger").index != -1),
                HasLeftXThumbStick = (gpc.Read("leftx").index != -1),
                HasLeftYThumbStick = (gpc.Read("lefty").index != -1),
                HasRightXThumbStick = (gpc.Read("rightx").index != -1),
                HasRightYThumbStick = (gpc.Read("righty").index != -1),
                HasLeftVibrationMotor = false,
                HasRightVibrationMotor = false,
                HasVoiceSupport = false,
                HasBigButton = (gpc.Read("guide").index != -1)
            });
        }