Пример #1
0
        private GamePadStatus getStatus()
        {
            var state  = GamePad.GetState(_playerIndex);
            var status = new GamePadStatus();

            status.isConnected = state.IsConnected;
            status.buttons     = new bool[buttonCodes.Length];
            for (var i = 0; i < buttonCodes.Length; i++)
            {
                status.buttons[i] = state.IsButtonDown((Buttons)buttonCodes[i]);
            }
            status.axes = new []
            {
                state.ThumbSticks.Left.X,
                state.ThumbSticks.Left.Y,
                state.ThumbSticks.Right.X,
                state.ThumbSticks.Right.Y,
                state.Triggers.Left,
                state.Triggers.Right
            };
            status.povs = new[]
            {
                getPov(0)
            };
            status.accelerometers = new Vector3[0];

            return(status);
        }
Пример #2
0
        public float getAxis(int axisCode)
        {
            var state = GamePad.GetState(_playerIndex);

            switch ((AxisCodes)axisCode)
            {
            case AxisCodes.LeftThumbstickX:
                return(state.ThumbSticks.Left.X);

            case AxisCodes.LeftThumbstickY:
                return(state.ThumbSticks.Left.Y);

            case AxisCodes.RightThumbstickX:
                return(state.ThumbSticks.Right.X);

            case AxisCodes.RightThumbstickY:
                return(state.ThumbSticks.Right.Y);

            case AxisCodes.LeftTrigger:
                return(state.Triggers.Left);

            case AxisCodes.RightTrigger:
                return(state.Triggers.Right);

            default:
                return(0);
            }
        }
Пример #3
0
        //=========== UPDATING ===========
        #region Updating

        /** <summary> Called every step to update the button states. </summary> */
        public static void Update(GameTime gameTime)
        {
            for (int i = 0; i < 4; i++)
            {
                XnaPlayer player = (XnaPlayer)i;
                buttons[i, (int)Buttons.A].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.A));
                buttons[i, (int)Buttons.B].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.B));
                buttons[i, (int)Buttons.X].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.X));
                buttons[i, (int)Buttons.Y].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.Y));

                buttons[i, (int)Buttons.Start].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.Start));
                buttons[i, (int)Buttons.Back].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.Back));

                buttons[i, (int)Buttons.Home].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.BigButton));
                buttons[i, (int)Buttons.LeftShoulder].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.LeftShoulder));
                buttons[i, (int)Buttons.RightShoulder].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.RightShoulder));
                buttons[i, (int)Buttons.LeftStickButton].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.LeftStick));
                buttons[i, (int)Buttons.RightStickButton].Update(1, XnaGamePad.GetState(player).IsButtonDown(XnaButtons.RightStick));

                Vector2F dPad = Vector2F.Zero;
                if (XnaGamePad.GetState(player).IsButtonDown(XnaButtons.DPadRight))
                {
                    dPad.X = 1;
                }
                if (XnaGamePad.GetState(player).IsButtonDown(XnaButtons.DPadDown))
                {
                    dPad.Y = 1;
                }
                if (XnaGamePad.GetState(player).IsButtonDown(XnaButtons.DPadLeft))
                {
                    dPad.X = -1;
                }
                if (XnaGamePad.GetState(player).IsButtonDown(XnaButtons.DPadUp))
                {
                    dPad.Y = -1;
                }
                if (dPad.X != 0.0f && dPad.Y != 0.0f)
                {
                    dPad.X /= GMath.Sqrt(2.0f);
                    dPad.Y /= GMath.Sqrt(2.0f);
                }
                sticks[i, (int)Buttons.DPad].Update(1, dPad);

                Vector2F stick = Vector2F.Zero;

                stick    = XnaGamePad.GetState(player).ThumbSticks.Left;
                stick.Y *= -1;
                sticks[i, (int)Buttons.LeftStick].Update(1, stick);

                stick    = XnaGamePad.GetState(player).ThumbSticks.Right;
                stick.Y *= -1;
                sticks[i, (int)Buttons.RightStick].Update(1, stick);


                float trigger = XnaGamePad.GetState(player).Triggers.Left;
                triggers[i, (int)Buttons.LeftTrigger].Update(1, trigger);
                trigger = XnaGamePad.GetState(player).Triggers.Right;
                triggers[i, (int)Buttons.RightTrigger].Update(1, trigger);
            }
        }
Пример #4
0
        internal void Update()
        {
            GamePadState state = XnaGamePad.GetState(_playerIndex);

            foreach (var en in _keys)
            {
                bool isPressed  = state.IsButtonDown(en);
                bool wasPressed = _states[en] != GamePadButtonState.Released;

                if (isPressed)
                {
                    if (wasPressed)
                    {
                        _states[en] = GamePadButtonState.Hold;
                    }
                    else
                    {
                        _states[en] = GamePadButtonState.Pressed;
                    }
                }
                else
                {
                    _states[en] = GamePadButtonState.Released;
                }
            }
        }
Пример #5
0
        public PovState getPov(int povCode)
        {
            if (povCode != 0)
            {
                throw new NotSupportedException();
            }

            var      state    = GamePad.GetState(povCode).DPad;
            PovState povState = PovState.CENTER;

            if (state.Down == ButtonState.Pressed)
            {
                povState = PovState.SOUTH;
            }

            if (state.Up == ButtonState.Pressed)
            {
                povState = PovState.NORTH;
            }

            if (state.Left == ButtonState.Pressed)
            {
                if (povState == PovState.NORTH)
                {
                    povState = PovState.NORTH_WEST;
                }
                else if (povState == PovState.SOUTH)
                {
                    povState = PovState.SOUTH_WEST;
                }
                else
                {
                    povState = PovState.WEST;
                }
            }

            if (state.Right == ButtonState.Pressed)
            {
                if (povState == PovState.NORTH)
                {
                    povState = PovState.NORTH_EAST;
                }
                else if (povState == PovState.SOUTH)
                {
                    povState = PovState.SOUTH_EAST;
                }
                else
                {
                    povState = PovState.EAST;
                }
            }

            return(povState);
        }
Пример #6
0
        /// <summary>Updates the state of the input device</summary>
        /// <remarks>
        ///   <para>
        ///     If this method is called with no snapshots in the queue, it will take
        ///     an immediate snapshot and make it the current state. This way, you
        ///     can use the input devices without caring for the snapshot system if
        ///     you wish.
        ///   </para>
        ///   <para>
        ///     If this method is called while one or more snapshots are waiting in
        ///     the queue, this method takes the next snapshot from the queue and makes
        ///     it the current state.
        ///   </para>
        /// </remarks>
        public override void Update()
        {
            GamePadState previous = this.current;

            if (this.states.Count == 0)
            {
                this.current = MsGamePad.GetState(this.playerIndex);
            }
            else
            {
                this.current = this.states.Dequeue();
            }

            GenerateEvents(ref previous, ref this.current);
        }
Пример #7
0
 private static void UpdateGamePadState(PlayerIndex playerIndex)
 {
     GamePads[(int)playerIndex] = GamePads[(int)playerIndex].Next(GP.GetState(playerIndex));
 }
Пример #8
0
 internal override GamePadState GetState()
 {
     return(XnaGamePad.GetState(playerIndex));
 }
Пример #9
0
 public bool isButtonUp(int buttonCode)
 {
     return(GamePad.GetState(_playerIndex).IsButtonUp((Buttons)buttonCode));
 }
Пример #10
0
 public bool isConnected()
 {
     return(GamePad.GetState(_playerIndex).IsConnected);
 }
Пример #11
0
 private void UpdateGamePadState(PlayerIndex playerIndex)
 {
     _gamePads[(int)playerIndex] = _gamePads[(int)playerIndex].Next(GP.GetState(playerIndex));
 }
Пример #12
0
 private GamePadState GetState() => MonogameGamePad.GetState(PlayerIndex.One);
Пример #13
0
 /// <summary>Takes a snapshot of the current state of the input device</summary>
 /// <remarks>
 ///   This snapshot will be queued until the user calls the Update() method,
 ///   where the next polled snapshot will be taken from the queue and provided
 ///   to the user.
 /// </remarks>
 public override void TakeSnapshot()
 {
     this.states.Enqueue(MsGamePad.GetState(this.playerIndex));
 }
Пример #14
0
 internal override bool GetState()
 {
     return(XnaGamePad.GetState(PlayerIndex.One).IsButtonDown(Buttons.Back));
 }