Beispiel #1
0
 /// <summary>
 /// Notifies the subscriber to input
 /// </summary>
 /// <param name="playerIndex">The index of the player to alert</param>
 /// <param name="gamePadButtons">The button state</param>
 /// <param name="thumbSticks">The thumbstick properties for the controller</param>
 public void notifyGamePadInput(int playerIndex, Buttons gamePadButtons, GamePadThumbSticks thumbSticks)
 {
     if (playerIndex < playerDict.Count)
     {
         playerDict[playerIndex].gamePadInput(gamePadButtons, thumbSticks);
     }
 }
Beispiel #2
0
        public void PublicConstructorClampsValues(Vector2 left, Vector2 right, Vector2 expectedLeft, Vector2 expectedRight)
        {
            var gamePadThumbSticks = new GamePadThumbSticks(left, right);

            Assert.That(gamePadThumbSticks.Left, Is.EqualTo(expectedLeft).Using(Vector2Comparer.Epsilon));
            Assert.That(gamePadThumbSticks.Right, Is.EqualTo(expectedRight).Using(Vector2Comparer.Epsilon));
        }
Beispiel #3
0
        private static void SetFeather(InputFrame input, ref GamePadDPad pad, ref GamePadThumbSticks sticks)
        {
            pad = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released);
            Vector2 aim = AnalogHelper.GetFeather(input);

            sticks = new GamePadThumbSticks(aim, new Vector2(0, 0));
        }
 public GamepadState(GamePadThumbSticks thumbSticks, GamePadTriggers triggers, GamePadButtonsSet buttons)
 {
     Connected   = true;
     ThumbSticks = thumbSticks;
     Triggers    = triggers;
     Buttons     = buttons;
 }
Beispiel #5
0
        private static void SetFeather(InputRecord input, ref GamePadDPad pad, ref GamePadThumbSticks sticks)
        {
            pad = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released);
            Vector2 aim = ValidateFeatherInput(input);

            sticks = new GamePadThumbSticks(aim, new Vector2(0, 0));
        }
Beispiel #6
0
        public static void SetInputs(InputRecord input)
        {
            GamePadDPad        pad;
            GamePadThumbSticks sticks;

            pad = new GamePadDPad(
                input.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released,
                input.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released,
                input.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released,
                input.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released
                );
            sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0));
            GamePadState state = new GamePadState(
                sticks,
                new GamePadTriggers(),
                new GamePadButtons(
                    (input.HasActions(Actions.Jump) ? Buttons.A : 0)
                    | (input.HasActions(Actions.Map) ? Buttons.Y : 0)
                    | (input.HasActions(Actions.Feathers) ? Buttons.B : 0)
                    | (input.HasActions(Actions.Attack) ? Buttons.X : 0)
                    | (input.HasActions(Actions.ToggleRight) ? Buttons.RightShoulder : 0)
                    | (input.HasActions(Actions.Menu) ? Buttons.Start : 0)
                    | (input.HasActions(Actions.ToggleLeft) ? Buttons.LeftShoulder : 0)
                    ),
                pad
                );

            Input.TasGamepadState = state;
        }
Beispiel #7
0
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>
        /// 前回の状態と現在の状態より、ボタン入力があったかどうかを取得します。
        /// </summary>
        ///
        /// <param name="now">現在のキー入力状態。</param>
        /// <param name="prev">前回のキー入力状態。</param>
        /// <returns>ボタン入力があった場合、<c>true</c>。</returns>
        protected override bool isInput(GamePadState now, GamePadState prev)
        {
            bool result = now.IsConnected && prev.IsConnected;

            if (result)
            {
                GamePadButtons     btns  = now.Buttons;
                GamePadDPad        dpad  = now.DPad;
                GamePadThumbSticks nStks = now.ThumbSticks;
                GamePadThumbSticks pStks = prev.ThumbSticks;
                // TODO : トリガ忘れてね?
                result =
                    btns != prev.Buttons && (
                        btns.A == ButtonState.Pressed ||
                        btns.B == ButtonState.Pressed ||
                        btns.Back == ButtonState.Pressed ||
                        btns.BigButton == ButtonState.Pressed ||
                        btns.LeftShoulder == ButtonState.Pressed ||
                        btns.LeftStick == ButtonState.Pressed ||
                        btns.RightShoulder == ButtonState.Pressed ||
                        btns.RightStick == ButtonState.Pressed ||
                        btns.Start == ButtonState.Pressed ||
                        btns.X == ButtonState.Pressed ||
                        btns.Y == ButtonState.Pressed) ||
                    dpad != prev.DPad && (
                        dpad.Up == ButtonState.Pressed ||
                        dpad.Down == ButtonState.Pressed ||
                        dpad.Left == ButtonState.Pressed ||
                        dpad.Right == ButtonState.Pressed) ||
                    nStks != pStks && (
                        (nStks.Left.Length() >= threshold && pStks.Left.Length() < threshold) ||
                        (nStks.Right.Length() >= threshold && pStks.Right.Length() < threshold));
            }
            return(result);
        }
Beispiel #8
0
        public static GamePadState CalculateInputs()
        {
            kbState = Keyboard.GetState();

            GamePadDPad pad = new GamePadDPad(
                ButtonState.Released,
                ButtonState.Released,
                IsKeyDown(Keys.OemQuotes) ? ButtonState.Pressed : ButtonState.Released,
                IsKeyDown(Keys.OemBackslash) ? ButtonState.Pressed : ButtonState.Released);
            GamePadThumbSticks sticks   = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0));
            GamePadState       padState = new GamePadState(
                sticks,
                new GamePadTriggers(0, 0),
                new GamePadButtons(
                    IsTile(GetTileInFrontOfPlayer()) ? Buttons.A : (Buttons)0
                    | (Buttons)0
                    | (Buttons)0
                    | (Buttons)0
                    | (Buttons)0
                    | (Buttons)0
                    | (Buttons)0
                    ),
                pad
                );

            return(padState);
        }
Beispiel #9
0
 public GamePadValues(GamePadThumbSticks thumbSticks, GamePadTriggers triggers)
     : this(
         thumbSticks.Left.X, thumbSticks.Left.Y,
         thumbSticks.Right.X, thumbSticks.Right.Y,
         triggers.Left, triggers.Right)
 {
 }
 public ThumbStickStateEventArgs(GamePadNumber controllerNum, GamePadThumbSticks thumbStick, float xValue, float yValue)
     : base(controllerNum)
 {
     this.ThumbStick = thumbStick;
     this.XValue = xValue;
     this.YValue = yValue;
 }
Beispiel #11
0
        public static void Update()
        {
            for (int player = 0; player < States.Length; player++)
            {
                GamePadState stateX = GamePad.GetState((PlayerIndex)player);
                DInputState  stateD = States[player];
                stateD.connected = stateX.IsConnected;
                if (!stateD.connected)
                {
                    continue;
                }
                // TODO: Finalize DInput mappings

                GamePadThumbSticks sticks = stateX.ThumbSticks;
                stateD.leftX  = sticks.Left.X;
                stateD.leftY  = sticks.Left.Y;
                stateD.leftZ  = 0f; // ???
                stateD.rightX = sticks.Right.X;
                stateD.rightY = sticks.Right.Y;
                stateD.rightZ = 0f; // ???

                GamePadTriggers triggers = stateX.Triggers;
                stateD.slider1 = stateX.Triggers.Left;
                stateD.slider2 = stateX.Triggers.Right;

                GamePadDPad dpad = stateX.DPad;
                stateD.left  = dpad.Left == ButtonState.Pressed;
                stateD.right = dpad.Right == ButtonState.Pressed;
                stateD.up    = dpad.Up == ButtonState.Pressed;
                stateD.down  = dpad.Down == ButtonState.Pressed;

                GamePadButtons buttonsX = stateX.Buttons;
                List <bool>    buttonsD = stateD.buttons ?? new List <bool>();
                for (int i = buttonsD.Count; i < 13; i++)
                {
                    buttonsD.Add(false);
                }
                while (buttonsD.Count > 13)
                {
                    buttonsD.RemoveAt(0);
                }

                buttonsD[0]  = buttonsX.X == ButtonState.Pressed;
                buttonsD[1]  = buttonsX.A == ButtonState.Pressed;
                buttonsD[2]  = buttonsX.B == ButtonState.Pressed;
                buttonsD[3]  = buttonsX.Y == ButtonState.Pressed;
                buttonsD[4]  = buttonsX.LeftShoulder == ButtonState.Pressed;
                buttonsD[5]  = buttonsX.RightShoulder == ButtonState.Pressed;
                buttonsD[6]  = triggers.Left >= 0.999f;
                buttonsD[7]  = triggers.Right >= 0.999f;
                buttonsD[8]  = buttonsX.Back == ButtonState.Pressed;
                buttonsD[9]  = buttonsX.Start == ButtonState.Pressed;
                buttonsD[10] = buttonsX.BigButton == ButtonState.Pressed; // ???
                buttonsD[11] = buttonsX.LeftStick == ButtonState.Pressed;
                buttonsD[12] = buttonsX.RightStick == ButtonState.Pressed;

                stateD.buttons = buttonsD;
            }
        }
Beispiel #12
0
        public void Update(GameTime gameTime)
        {
            previousState = currentState;
            currentState  = GamePad.GetState(Player, GamePadDeadZone.IndependentAxes);

            previousThumbsticks = currentThumbsticks;
            currentThumbsticks  = GamePad.GetState(Player, GamePadDeadZone.None).ThumbSticks;
        }
Beispiel #13
0
 private void InputUpdate()
 {
     this.prevState = this.state;
     this.state     = GamePad.GetState(this.playerIndex);
     if (this._pos < this._maxLength)
     {
         if (this.state.IsConnected)
         {
             InputThread.InputStruct       inputStruct = this.inputsIn[this._pos];
             InputFilter                   inputFilter = this.leftXFilter;
             GamePadThumbSticks            thumbSticks = this.state.ThumbSticks;
             GamePadThumbSticks.StickValue left        = thumbSticks.Left;
             inputStruct.leftX = inputFilter.Filter((double)left.X);
             InputThread.InputStruct inputStruct1 = this.inputsIn[this._pos];
             InputFilter             inputFilter1 = this.leftYFilter;
             thumbSticks        = this.state.ThumbSticks;
             left               = thumbSticks.Left;
             inputStruct1.leftY = inputFilter1.Filter((double)left.Y);
             InputThread.InputStruct inputStruct2 = this.inputsIn[this._pos];
             InputFilter             inputFilter2 = this.rightXFilter;
             thumbSticks         = this.state.ThumbSticks;
             left                = thumbSticks.Right;
             inputStruct2.rightX = inputFilter2.Filter((double)left.X);
             InputThread.InputStruct inputStruct3 = this.inputsIn[this._pos];
             InputFilter             inputFilter3 = this.rightYFilter;
             thumbSticks                        = this.state.ThumbSticks;
             left                               = thumbSticks.Right;
             inputStruct3.rightY                = inputFilter3.Filter((double)left.Y);
             this.inputsIn[this._pos].time      = DateTime.UtcNow.Ticks;
             this.inputsIn[this._pos].leftXVel  = this.GetVel(this.inputsIn[this._pos].leftX, this._lastFrameData.leftX, this.inputsIn[this._pos].time, this._lastFrameData.time);
             this.inputsIn[this._pos].leftYVel  = this.GetVel(this.inputsIn[this._pos].leftY, this._lastFrameData.leftY, this.inputsIn[this._pos].time, this._lastFrameData.time);
             this.inputsIn[this._pos].rightXVel = this.GetVel(this.inputsIn[this._pos].rightX, this._lastFrameData.rightX, this.inputsIn[this._pos].time, this._lastFrameData.time);
             this.inputsIn[this._pos].rightYVel = this.GetVel(this.inputsIn[this._pos].rightY, this._lastFrameData.rightY, this.inputsIn[this._pos].time, this._lastFrameData.time);
             this._lastFrameData.leftX          = this.inputsIn[this._pos].leftX;
             this._lastFrameData.leftY          = this.inputsIn[this._pos].leftY;
             this._lastFrameData.rightX         = this.inputsIn[this._pos].rightX;
             this._lastFrameData.rightY         = this.inputsIn[this._pos].rightY;
             this._lastFrameData.time           = this.inputsIn[this._pos].time;
             this._pos++;
             return;
         }
         this.inputsIn[this._pos].leftX     = this.leftXFilter.Filter((double)((Mathf.Abs(this.inputController.player.GetAxis("LeftStickX")) < 0.1f ? 0f : this.inputController.player.GetAxis("LeftStickX"))));
         this.inputsIn[this._pos].leftY     = this.leftYFilter.Filter((double)this.inputController.player.GetAxis("LeftStickY"));
         this.inputsIn[this._pos].rightX    = this.rightXFilter.Filter((double)((Mathf.Abs(this.inputController.player.GetAxis("RightStickX")) < 0.1f ? 0f : this.inputController.player.GetAxis("RightStickX"))));
         this.inputsIn[this._pos].rightY    = this.rightYFilter.Filter((double)this.inputController.player.GetAxis("RightStickY"));
         this.inputsIn[this._pos].time      = DateTime.UtcNow.Ticks;
         this.inputsIn[this._pos].leftXVel  = this.GetVel(this.inputsIn[this._pos].leftX, this._lastFrameData.leftX, this.inputsIn[this._pos].time, this._lastFrameData.time);
         this.inputsIn[this._pos].leftYVel  = this.GetVel(this.inputsIn[this._pos].leftY, this._lastFrameData.leftY, this.inputsIn[this._pos].time, this._lastFrameData.time);
         this.inputsIn[this._pos].rightXVel = this.GetVel(this.inputsIn[this._pos].rightX, this._lastFrameData.rightX, this.inputsIn[this._pos].time, this._lastFrameData.time);
         this.inputsIn[this._pos].rightYVel = this.GetVel(this.inputsIn[this._pos].rightY, this._lastFrameData.rightY, this.inputsIn[this._pos].time, this._lastFrameData.time);
         this._lastFrameData.leftX          = this.inputsIn[this._pos].leftX;
         this._lastFrameData.leftY          = this.inputsIn[this._pos].leftY;
         this._lastFrameData.rightX         = this.inputsIn[this._pos].rightX;
         this._lastFrameData.rightY         = this.inputsIn[this._pos].rightY;
         this._lastFrameData.time           = this.inputsIn[this._pos].time;
         this._pos++;
     }
 }
            internal GamePadState(bool isConnected, RawState rawState, GamePadDeadZone deadZone)
            {
                this.isConnected = isConnected;

                if (!isConnected)
                {
                    rawState.dwPacketNumber        = 0;
                    rawState.Gamepad.dwButtons     = 0;
                    rawState.Gamepad.bLeftTrigger  = 0;
                    rawState.Gamepad.bRightTrigger = 0;
                    rawState.Gamepad.sThumbLX      = 0;
                    rawState.Gamepad.sThumbLY      = 0;
                    rawState.Gamepad.sThumbRX      = 0;
                    rawState.Gamepad.sThumbRY      = 0;
                }

                packetNumber = rawState.dwPacketNumber;
                buttons      = new GamePadButtons(
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Start) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Back) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.LeftThumb) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.RightThumb) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.LeftShoulder) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.RightShoulder) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Guide) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.A) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.B) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.X) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Y) != 0 ? ButtonState.Pressed : ButtonState.Released
                    );
                dPad = new GamePadDPad(
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadUp) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadDown) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadLeft) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadRight) != 0 ? ButtonState.Pressed : ButtonState.Released
                    );

                switch (deadZone)
                {
                case GamePadDeadZone.IndependentAxes:
                    rawState.Gamepad.sThumbLX = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbLX, (short)Imports.Constants.LeftStickDeadZone);
                    rawState.Gamepad.sThumbLY = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbLY, (short)Imports.Constants.LeftStickDeadZone);
                    rawState.Gamepad.sThumbRX = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbRX, (short)Imports.Constants.RightStickDeadZone);
                    rawState.Gamepad.sThumbRY = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbRY, (short)Imports.Constants.RightStickDeadZone);
                    break;
                }

                thumbSticks = new GamePadThumbSticks(
                    new GamePadThumbSticks.StickValue(
                        rawState.Gamepad.sThumbLX < 0 ? rawState.Gamepad.sThumbLX / 32768.0f : rawState.Gamepad.sThumbLX / 32767.0f,
                        rawState.Gamepad.sThumbLY < 0 ? rawState.Gamepad.sThumbLY / 32768.0f : rawState.Gamepad.sThumbLY / 32767.0f),
                    new GamePadThumbSticks.StickValue(
                        rawState.Gamepad.sThumbRX < 0 ? rawState.Gamepad.sThumbRX / 32768.0f : rawState.Gamepad.sThumbRX / 32767.0f,
                        rawState.Gamepad.sThumbRY < 0 ? rawState.Gamepad.sThumbRY / 32768.0f : rawState.Gamepad.sThumbRY / 32767.0f)
                    );
                triggers = new GamePadTriggers(rawState.Gamepad.bLeftTrigger / 255.0f, rawState.Gamepad.bRightTrigger / 255.0f);
            }
Beispiel #15
0
 private static void SetDPad(InputFrame input, ref GamePadDPad pad, ref GamePadThumbSticks sticks)
 {
     pad = new GamePadDPad(
         input.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released,
         input.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released,
         input.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released,
         input.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released
         );
     sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0));
 }
Beispiel #16
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:Microsoft.Xna.Framework.Input.GamePadState"/> struct
        /// using the specified GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad.
        /// </summary>
        /// <param name="thumbSticks">Initial thumbstick state.</param>
        /// <param name="triggers">Initial trigger state..</param>
        /// <param name="buttons">Initial button state.</param>
        /// <param name="dPad">Initial directional pad state.</param>
        public GamePadState(GamePadThumbSticks thumbSticks, GamePadTriggers triggers, GamePadButtons buttons, GamePadDPad dPad) : this()
        {
            ThumbSticks = thumbSticks;
            Triggers    = triggers;
            Buttons     = buttons;
            DPad        = dPad;
            IsConnected = true;

            PlatformConstruct();
        }
Beispiel #17
0
        public static void SetInputs(InputRecord input)
        {
            GamePadDPad        pad;
            GamePadThumbSticks sticks;

            if (input.HasActions(Actions.Feather))
            {
                pad    = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released);
                sticks = new GamePadThumbSticks(new Vector2(input.GetX(), input.GetY()), new Vector2(0, 0));
            }
            else
            {
                pad = new GamePadDPad(
                    input.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released,
                    input.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released,
                    input.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released,
                    input.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released
                    );
                sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0));
            }
            GamePadState state = new GamePadState(
                sticks,
                new GamePadTriggers(input.HasActions(Actions.Journal) ? 1f : 0f, 0),
                new GamePadButtons(
                    (input.HasActions(Actions.Jump) ? Buttons.A : (Buttons)0)
                    | (input.HasActions(Actions.Jump2) ? Buttons.Y : (Buttons)0)
                    | (input.HasActions(Actions.Dash) ? Buttons.B : (Buttons)0)
                    | (input.HasActions(Actions.Dash2) ? Buttons.X : (Buttons)0)
                    | (input.HasActions(Actions.Grab) ? Buttons.RightShoulder : (Buttons)0)
                    | (input.HasActions(Actions.Start) ? Buttons.Start : (Buttons)0)
                    | (input.HasActions(Actions.Restart) ? Buttons.LeftShoulder : (Buttons)0)
                    ),
                pad
                );

            bool found = false;

            for (int i = 0; i < 4; i++)
            {
                MInput.GamePads[i].Update();
                if (MInput.GamePads[i].Attached)
                {
                    found = true;
                    MInput.GamePads[i].CurrentState = state;
                }
            }

            if (!found)
            {
                MInput.GamePads[0].CurrentState = state;
                MInput.GamePads[0].Attached     = true;
            }
            MInput.UpdateVirtualInputs();
        }
 // コンストラクタ
 public GameManager(ContentManager content, GraphicsDevice graphics) // GameManagerを呼べばいつでもここに書いてある機能を使えるようにする。
 {
     InputState = new InputState();
     Sticks     = new GamePadThumbSticks();
     PadState   = new GamePadState();
     Renderer   = new Renderer(content, graphics);
     Sound      = new Sound(content);
     GameTime   = new GameTime();
     Random     = new Random();
     Camera     = new Camera(Player.GetPos);
 }
Beispiel #19
0
    void Positions()
    {
        // Just some shortcuts.
        GamePadThumbSticks currentTS = currentState.ThumbSticks;
        GamePadTriggers    currentT  = currentState.Triggers;

        leftStickPos.x  = currentTS.Left.X; leftStickPos.y = currentTS.Left.Y;
        rightStickPos.x = currentTS.Right.X; rightStickPos.y = currentTS.Right.Y;

        leftShoulderPos  = currentT.Left;
        rightShoulderPos = currentT.Right;
    }
        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            frameCount++; // starting to draw a new frame

            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            spriteBatch.Begin();
            // display a title
            spriteBatch.DrawString(mainFont, "Input Demo", new Vector2(10, 10), Color.Black);

            // check which keys are pressed
            for (int i = 0; i < 4; i++)
            {
                // if key is pressed display a message
                if (wasd[i] == true)
                {
                    spriteBatch.DrawString(mainFont, wasdStr[i] + " key is pressed",
                                           new Vector2(10, (25 * i) + 40), Color.Blue);
                }
            }

            // check for left mouse button press
            if (mState.LeftButton == ButtonState.Pressed)
            {
                spriteBatch.DrawString(mouseFont, "left button on mouse is pressed",
                                       new Vector2(mState.X, mState.Y), Color.Red);
            }

            // see some game pad values
            if (gState.IsConnected == false)
            {
                spriteBatch.DrawString(mainFont, "No connected gamepad",
                                       new Vector2(10, 200), Color.Black);
            }
            else
            {
                GamePadThumbSticks sticks   = gState.ThumbSticks;
                Vector2            left     = sticks.Left;
                Vector2            right    = sticks.Right;
                string             leftStr  = "Left thumbstick - X: " + left.X + " Y: " + left.Y;
                string             rightStr = "Right thumbstick - X: " + right.X + " Y: " + right.Y;
                spriteBatch.DrawString(mainFont, leftStr, new Vector2(10, 200), Color.Black);
                spriteBatch.DrawString(mainFont, rightStr, new Vector2(10, 230), Color.Black);
            }

            // display framerate
            spriteBatch.DrawString(mainFont, "FPS: " + frameRate,
                                   new Vector2(400, 10), Color.Magenta);
            spriteBatch.End();

            base.Draw(gameTime);
        }
Beispiel #21
0
 /// <summary>
 /// Initializes a new instance of the GamePadState class using the specified
 /// GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad.
 /// </summary>
 /// <param name="thumbSticks">Initial thumbstick state.</param>
 /// <param name="triggers">Initial trigger state.</param>
 /// <param name="buttons">Initial button state.</param>
 /// <param name="dPad">Initial directional pad state.</param>
 public GamePadState(
     GamePadThumbSticks thumbSticks,
     GamePadTriggers triggers,
     GamePadButtons buttons
     ) : this()
 {
     ThumbSticks  = thumbSticks;
     Triggers     = triggers;
     Buttons      = buttons;
     IsConnected  = true;
     PacketNumber = 0;
 }
 private void updateGamePads()
 {
     for (uint playerIndex = 0; playerIndex < input.getPlayersCount(); ++playerIndex)
     {
         AsGamePad          gamePad  = AsGamePad.player(playerIndex);
         GamePadTriggers    triggers = input.Triggers(playerIndex);
         GamePadThumbSticks sticks   = input.ThumbSticks(playerIndex);
         gamePad.update(triggers.Left, triggers.Right);
         gamePad.getLeftStick().update(sticks.Left.X, sticks.Left.Y);
         gamePad.getRightStick().update(sticks.Right.X, sticks.Right.Y);
     }
 }
        public GamepadStateWeighted(GamePadState state_, float stickDZ_ = 0.1f)
        {
            StickDZ       = stickDZ_;
            _gamepadState = state_;

            Triggers    = state_.Triggers;
            ThumbSticks = state_.ThumbSticks;
            Buttons     = state_.Buttons;
            DPad        = state_.DPad;

            IsConnected  = state_.IsConnected;
            PacketNumber = state_.PacketNumber;
        }
Beispiel #24
0
        /// <summary>
        /// Initializes a new instance of the GamePadState class using the specified
        /// GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad.
        /// </summary>
        /// <param name="thumbSticks">Initial thumbstick state.</param>
        /// <param name="triggers">Initial trigger state.</param>
        /// <param name="buttons">Initial button state.</param>
        /// <param name="dPad">Initial directional pad state.</param>
        public GamePadState(
			GamePadThumbSticks thumbSticks,
			GamePadTriggers triggers,
			GamePadButtons buttons,
			GamePadDPad dPad
		)
            : this()
        {
            ThumbSticks = thumbSticks;
            Triggers = triggers;
            Buttons = buttons;
            DPad = dPad;
            IsConnected = true;
            PacketNumber = 0;
        }
Beispiel #25
0
        public static GamePadState GetState(int index, GamePadDeadZone deadZoneMode)
        {
            var          gamePad = GamePads[index];
            GamePadState state   = GamePadState.Default;

            if (gamePad != null && gamePad._isConnected)
            {
                // Check if the device was disconnected
                var dvc = InputDevice.GetDevice(gamePad._deviceId);
                if (dvc == null)
                {
                    Android.Util.Log.Debug("MonoGame", "Detected controller disconnect [" + index + "] ");
                    gamePad._isConnected = false;
                    return(state);
                }

                GamePadThumbSticks thumbSticks = new GamePadThumbSticks(gamePad._leftStick, gamePad._rightStick);

                var dpad = new GamePadDPad(
                    HasFlagToState(gamePad._buttons, Buttons.DPadUp),
                    HasFlagToState(gamePad._buttons, Buttons.DPadDown),
                    HasFlagToState(gamePad._buttons, Buttons.DPadLeft),
                    HasFlagToState(gamePad._buttons, Buttons.DPadRight));

                state = new GamePadState(
                    thumbSticks,
                    new GamePadTriggers(gamePad._leftTrigger, gamePad._rightTrigger),
                    new GamePadButtons(gamePad._buttons),
                    dpad);
            }
            // we need to add the default "no gamepad connected but the user hit back"
            // behaviour here
            else
            {
                if (index == 0 && Back)
                {
                    // Consume state
                    Back  = false;
                    state = new GamePadState(new GamePadThumbSticks(), new GamePadTriggers(), new GamePadButtons(Buttons.Back), new GamePadDPad());
                }
                else
                {
                    state = new GamePadState();
                }
            }

            return(state);
        }
Beispiel #26
0
        public static void SetInputs(InputFrame input)
        {
            GamePadDPad        pad    = default;
            GamePadThumbSticks sticks = default;
            GamePadState       state  = default;

            if (input.HasActions(Actions.Feather))
            {
                SetFeather(input, ref pad, ref sticks);
            }
            else
            {
                SetDPad(input, ref pad, ref sticks);
            }

            SetState(input, ref state, ref pad, ref sticks);

            bool found = false;

            for (int i = 0; i < 4; i++)
            {
                MInput.GamePads[i].Update();
                if (MInput.GamePads[i].Attached)
                {
                    found = true;
                    MInput.GamePads[i].CurrentState = state;
                }
            }

            if (!found)
            {
                MInput.GamePads[0].CurrentState = state;
                MInput.GamePads[0].Attached     = true;
            }

            if (input.HasActions(Actions.Confirm))
            {
                MInput.Keyboard.CurrentState = new KeyboardState(Keys.Enter);
            }
            else
            {
                MInput.Keyboard.CurrentState = new KeyboardState();
            }

            UpdateVirtualInputs();
        }
Beispiel #27
0
        /// <summary>
        /// Gets the button mask along with 'virtual buttons' like LeftThumbstickLeft.
        /// </summary>
        private Buttons GetVirtualButtons()
        {
            Buttons            result = Buttons.buttons;
            GamePadThumbSticks sticks = ThumbSticks;

            sticks.ApplyDeadZone(GamePadDeadZone.IndependentAxes, 7849 / 32767f);

            if (sticks.Left.X < 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickLeft;
            }
            else if (sticks.Left.X > 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickRight;
            }

            if (sticks.Left.Y < 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickDown;
            }
            else if (sticks.Left.Y > 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickUp;
            }

            if (sticks.Right.X < 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickLeft;
            }
            else if (sticks.Right.X > 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickRight;
            }

            if (sticks.Right.Y < 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickDown;
            }
            else if (sticks.Right.Y > 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickUp;
            }

            return(result);
        }
Beispiel #28
0
        private Vector2 ApplyDeadZone(GamePadThumbSticks ThumbStick)
        {
            // Scaled Radial Dead Zone
            Vector2 stickDirection = new Vector2(ThumbStick.Right.X,
                                                 -ThumbStick.Right.Y);

            if (stickDirection.Length() < Deadzone)
            {
                stickDirection = Vector2.Zero;
            }
            else
            {
                stickDirection.Normalize();
                stickDirection *= ((stickDirection.Length() - Deadzone) / (1 - Deadzone));
            }

            return(stickDirection);
        }
        private static float XInputGetAxisState(GamePadThumbSticks xiThumbSticks, XboxAxis xciAxis)
        {
            float stateToReturn = 0.0f;

            switch (xciAxis)
            {
            case XboxAxis.LeftStickX:               stateToReturn = xiThumbSticks.Left.X; break;

            case XboxAxis.LeftStickY:               stateToReturn = xiThumbSticks.Left.Y; break;

            case XboxAxis.RightStickX:              stateToReturn = xiThumbSticks.Right.X; break;

            case XboxAxis.RightStickY:              stateToReturn = xiThumbSticks.Right.Y; break;

            default:                                                stateToReturn = 0.0f; break;
            }

            return(stateToReturn);
        }
Beispiel #30
0
        private void SetInputs()
        {
            GamePadDPad        pad;
            GamePadThumbSticks sticks;

            if (Current.HasActions(Actions.Feather))
            {
                pad    = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released);
                sticks = new GamePadThumbSticks(new Vector2(Current.GetX(), Current.GetY()), new Vector2(0, 0));
            }
            else
            {
                pad = new GamePadDPad(
                    Current.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released,
                    Current.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released,
                    Current.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released,
                    Current.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released
                    );
                sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0));
            }
            GamePadState state = new GamePadState(
                sticks,
                new GamePadTriggers(Current.HasActions(Actions.Journal) ? 1f : 0f, 0),
                new GamePadButtons(
                    (Current.HasActions(Actions.Jump) ? Buttons.A : (Buttons)0)
                    | (Current.HasActions(Actions.Dash) ? Buttons.B : (Buttons)0)
                    | (Current.HasActions(Actions.Grab) ? Buttons.RightShoulder : (Buttons)0)
                    | (Current.HasActions(Actions.Start) ? Buttons.Start : (Buttons)0)
                    | (Current.HasActions(Actions.Restart) ? Buttons.LeftShoulder : (Buttons)0)
                    ),
                pad
                );

            for (int i = 0; i < 4; i++)
            {
                MInput.GamePads[i].Update();
                if (MInput.GamePads[i].Attached)
                {
                    MInput.GamePads[i].CurrentState = state;
                }
            }
            MInput.UpdateVirtualInputs();
        }
Beispiel #31
0
        /// <summary>
        /// Gets the button mask along with 'virtual buttons' like LeftThumbstickLeft.
        /// </summary>
        private Buttons GetVirtualButtons()
        {
            Buttons            result = Buttons.buttons;
            GamePadThumbSticks sticks = ThumbSticks;

            if (sticks.Left.X < 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickLeft;
            }
            else if (sticks.Left.X > 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickRight;
            }

            if (sticks.Left.Y < 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickDown;
            }
            else if (sticks.Left.Y > 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickUp;
            }

            if (sticks.Right.X < 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickLeft;
            }
            else if (sticks.Right.X > 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickRight;
            }

            if (sticks.Right.Y < 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickDown;
            }
            else if (sticks.Right.Y > 0)
            {
                result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickUp;
            }

            return(result);
        }
Beispiel #32
0
        public void gamePadInput(Buttons gamePadButtons, GamePadThumbSticks thumbSticks)
        {
            //acceleration was 2 for this

            var leftThumbX = thumbSticks.Left.X * acceleration;
            var leftThumbY = thumbSticks.Left.Y * -1 * acceleration;

            Vector2 vel = new Vector2(leftThumbX, leftThumbY);

            if (sprintActive)
            {
                vel = vel * 3;
            }


            if (gamePadButtons == inputButtons.rotateCW)
            {
                //Rotate(thumbSticks.Right);
            }
            else if (gamePadButtons == inputButtons.rotateACW)
            {
                //Rotate(thumbSticks.Right);
            }
            else if (gamePadButtons == inputButtons.sprint)
            {
                sprintActive = true;
            }
            else if (gamePadButtons == inputButtons.use)
            {
                if (!abilityTimeout)
                {
                    OnEntityRequested(new Vector2(Position.X + 80, Position.Y), "Walls/wall-left", typeof(Wall));
                    abilityTimeout = true;
                }
            }
            else
            {
                sprintActive = false;
            }

            Position += vel;
        }
Beispiel #33
0
            internal GamePadState(bool isConnected, RawState rawState, GamePadDeadZone deadZone)
            {
                this.isConnected = isConnected;

                if (!isConnected)
                {
                    rawState.dwPacketNumber = 0;
                    rawState.Gamepad.dwButtons = 0;
                    rawState.Gamepad.bLeftTrigger = 0;
                    rawState.Gamepad.bRightTrigger = 0;
                    rawState.Gamepad.sThumbLX = 0;
                    rawState.Gamepad.sThumbLY = 0;
                    rawState.Gamepad.sThumbRX = 0;
                    rawState.Gamepad.sThumbRY = 0;
                }

                packetNumber = rawState.dwPacketNumber;
                buttons = new GamePadButtons(
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Start) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Back) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.LeftThumb) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.RightThumb) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.LeftShoulder) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.RightShoulder) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Guide) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.A) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.B) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.X) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Y) != 0 ? ButtonState.Pressed : ButtonState.Released
                );
                dPad = new GamePadDPad(
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadUp) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadDown) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadLeft) != 0 ? ButtonState.Pressed : ButtonState.Released,
                    (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadRight) != 0 ? ButtonState.Pressed : ButtonState.Released
                );

                switch (deadZone)
                {
                    case GamePadDeadZone.IndependentAxes:
                        rawState.Gamepad.sThumbLX = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbLX, (short)Imports.Constants.LeftStickDeadZone);
                        rawState.Gamepad.sThumbLY = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbLY, (short)Imports.Constants.LeftStickDeadZone);
                        rawState.Gamepad.sThumbRX = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbRX, (short)Imports.Constants.RightStickDeadZone);
                        rawState.Gamepad.sThumbRY = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbRY, (short)Imports.Constants.RightStickDeadZone);
                        break;
                }

                thumbSticks = new GamePadThumbSticks(
                    new GamePadThumbSticks.StickValue(
                        rawState.Gamepad.sThumbLX < 0 ? rawState.Gamepad.sThumbLX / 32768.0f : rawState.Gamepad.sThumbLX / 32767.0f,
                        rawState.Gamepad.sThumbLY < 0 ? rawState.Gamepad.sThumbLY / 32768.0f : rawState.Gamepad.sThumbLY / 32767.0f),
                    new GamePadThumbSticks.StickValue(
                        rawState.Gamepad.sThumbRX < 0 ? rawState.Gamepad.sThumbRX / 32768.0f : rawState.Gamepad.sThumbRX / 32767.0f,
                        rawState.Gamepad.sThumbRY < 0 ? rawState.Gamepad.sThumbRY / 32768.0f : rawState.Gamepad.sThumbRY / 32767.0f)
                );
                triggers = new GamePadTriggers(rawState.Gamepad.bLeftTrigger / 255.0f, rawState.Gamepad.bRightTrigger / 255.0f);
            }