////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// private bool IsGamepadPresent(SlimDX.XInput.UserIndex userIndex, ref string name) { Xbox360Controller.Gamepad360 g; g = new Xbox360Controller.Gamepad360(userIndex); name = g.ToString(); return(g.Connected); }
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; } } }
////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// 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(); }); } }
////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// 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; * } * */ }