예제 #1
0
 //////////////////////////////////////////////////////////////////////
 //
 //////////////////////////////////////////////////////////////////////
 private bool IsGamepadPresent(SlimDX.XInput.UserIndex userIndex, ref string name)
 {
     Xbox360Controller.Gamepad360 g;
     g    = new Xbox360Controller.Gamepad360(userIndex);
     name = g.ToString();
     return(g.Connected);
 }
예제 #2
0
        private void OnInputChanged(object sender, EventArgs e)
        {
            m_currentInput = (InputsMgr.eInputName)GameBoy.Parameters.inputName;
            if (m_currentInput != eInputName.e_inputName_none)
            {
                if (m_currentInput == eInputName.e_inputName_keyboard)
                {
                    m_k_up     = (Key)KeyInterop.KeyFromVirtualKey((int)GameBoy.Parameters.inputUp);
                    m_k_down   = (Key)KeyInterop.KeyFromVirtualKey((int)GameBoy.Parameters.inputDown);
                    m_k_left   = (Key)KeyInterop.KeyFromVirtualKey((int)GameBoy.Parameters.inputLeft);
                    m_k_right  = (Key)KeyInterop.KeyFromVirtualKey((int)GameBoy.Parameters.inputRight);
                    m_k_A      = (Key)KeyInterop.KeyFromVirtualKey((int)GameBoy.Parameters.inputA);
                    m_k_B      = (Key)KeyInterop.KeyFromVirtualKey((int)GameBoy.Parameters.inputB);
                    m_k_start  = (Key)KeyInterop.KeyFromVirtualKey((int)GameBoy.Parameters.inputStart);
                    m_k_select = (Key)KeyInterop.KeyFromVirtualKey((int)GameBoy.Parameters.inputSelect);
                }
                else
                {
                    UserIndex i = UserIndex.Any;
                    switch (m_currentInput)
                    {
                    case InputsMgr.eInputName.e_inputName_gamepad_1:
                    {
                        i = UserIndex.One;
                        break;
                    }

                    case InputsMgr.eInputName.e_inputName_gamepad_2:
                    {
                        i = UserIndex.Two;
                        break;
                    }

                    case InputsMgr.eInputName.e_inputName_gamepad_3:
                    {
                        i = UserIndex.Three;
                        break;
                    }

                    case InputsMgr.eInputName.e_inputName_gamepad_4:
                    {
                        i = UserIndex.Four;
                        break;
                    }
                    }
                    m_gamepad  = new Xbox360Controller.Gamepad360(i);
                    m_p_up     = (GamepadButtonFlags)GameBoy.Parameters.inputUp;
                    m_p_down   = (GamepadButtonFlags)GameBoy.Parameters.inputDown;
                    m_p_left   = (GamepadButtonFlags)GameBoy.Parameters.inputLeft;
                    m_p_right  = (GamepadButtonFlags)GameBoy.Parameters.inputRight;
                    m_p_A      = (GamepadButtonFlags)GameBoy.Parameters.inputA;
                    m_p_B      = (GamepadButtonFlags)GameBoy.Parameters.inputB;
                    m_p_start  = (GamepadButtonFlags)GameBoy.Parameters.inputStart;
                    m_p_select = (GamepadButtonFlags)GameBoy.Parameters.inputSelect;
                }
            }
        }
예제 #3
0
        //////////////////////////////////////////////////////////////////////
        //
        //////////////////////////////////////////////////////////////////////
        private void GamePadCheckInput(object comboBoxItemObj)
        {
            ComboboxItem item = (ComboboxItem)comboBoxItemObj;
            UserIndex    i    = UserIndex.Any;

            switch (item.Value)
            {
            case InputsMgr.eInputName.e_inputName_gamepad_1:
            {
                i = UserIndex.One;
                break;
            }

            case InputsMgr.eInputName.e_inputName_gamepad_2:
            {
                i = UserIndex.Two;
                break;
            }

            case InputsMgr.eInputName.e_inputName_gamepad_3:
            {
                i = UserIndex.Three;
                break;
            }

            case InputsMgr.eInputName.e_inputName_gamepad_4:
            {
                i = UserIndex.Four;
                break;
            }
            }
            if (i != UserIndex.Any)
            {
                Xbox360Controller.Gamepad360 g = new Xbox360Controller.Gamepad360(i);
                int input = 0;
                do
                {
                    input = getGamepadInput(g);
                    Thread.Sleep(100);
                } while (input == 0);
                m_inputs[(int)m_currentWaitingButton] = input;
                m_isWaitingForInput    = false;
                m_currentWaitingButton = (int)Keys.None;

                this.Invoke((MethodInvoker) delegate()
                {
                    this.RefreshUI();
                });
            }
        }
예제 #4
0
        //////////////////////////////////////////////////////////////////////
        //
        //////////////////////////////////////////////////////////////////////
        private int getGamepadInput(Xbox360Controller.Gamepad360 g)
        {
            SlimDX.XInput.Gamepad gamepadState = g.Controller.GetState().Gamepad;
            // Shoulders
            if ((gamepadState.Buttons & GamepadButtonFlags.LeftShoulder) != 0)
            {
                return((int)GamepadButtonFlags.LeftShoulder);
            }
            if ((gamepadState.Buttons & GamepadButtonFlags.RightShoulder) != 0)
            {
                return((int)GamepadButtonFlags.LeftShoulder);
            }
            // Buttons
            if ((gamepadState.Buttons & GamepadButtonFlags.Start) != 0)
            {
                return((int)GamepadButtonFlags.Start);
            }
            if ((gamepadState.Buttons & GamepadButtonFlags.Back) != 0)
            {
                return((int)GamepadButtonFlags.Back);
            }
            if ((gamepadState.Buttons & GamepadButtonFlags.A) != 0)
            {
                return((int)GamepadButtonFlags.A);
            }
            if ((gamepadState.Buttons & GamepadButtonFlags.B) != 0)
            {
                return((int)GamepadButtonFlags.B);
            }
            if ((gamepadState.Buttons & GamepadButtonFlags.X) != 0)
            {
                return((int)GamepadButtonFlags.X);
            }
            if ((gamepadState.Buttons & GamepadButtonFlags.Y) != 0)
            {
                return((int)GamepadButtonFlags.Y);
            }
            // D-Pad
            if ((gamepadState.Buttons & GamepadButtonFlags.DPadUp) != 0)
            {
                return((int)GamepadButtonFlags.DPadUp);
            }
            if ((gamepadState.Buttons & GamepadButtonFlags.DPadDown) != 0)
            {
                return((int)GamepadButtonFlags.DPadDown);
            }
            if ((gamepadState.Buttons & GamepadButtonFlags.DPadLeft) != 0)
            {
                return((int)GamepadButtonFlags.DPadLeft);
            }
            if ((gamepadState.Buttons & GamepadButtonFlags.DPadRight) != 0)
            {
                return((int)GamepadButtonFlags.DPadRight);
            }
            return(0);


            /*
             * // Thumbsticks
             * LeftStick = new ThumbstickState(
             *  Normalize(gamepadState.LeftThumbX, gamepadState.LeftThumbY, Gamepad.GamepadLeftThumbDeadZone),
             *  (gamepadState.Buttons & GamepadButtonFlags.LeftThumb) != 0);
             * RightStick = new ThumbstickState(
             *  Normalize(gamepadState.RightThumbX, gamepadState.RightThumbY, Gamepad.GamepadRightThumbDeadZone),
             *  (gamepadState.Buttons & GamepadButtonFlags.RightThumb) != 0);
             * // Triggers
             * if (gamepadState.LeftTrigger / (float)byte.MaxValue != 0.0 )
             * {
             *  return (int)-1;
             * }
             * if (gamepadState.RightTrigger / (float)byte.MaxValue != 0.0 )
             * {
             *  return (int)-1;
             * }
             * */
        }