Mesen-X/Windows/GamePad.cpp

37 lines
1 KiB
C++
Raw Normal View History

2014-06-21 19:03:13 -04:00
#include "stdafx.h"
#include "GamePad.h"
GamePad::GamePad()
{
}
bool GamePad::RefreshState()
2014-06-21 19:03:13 -04:00
{
int controllerId = -1;
for(DWORD i = 0; i < XUSER_MAX_COUNT && controllerId == -1; i++) {
ZeroMemory(&_state, sizeof(XINPUT_STATE));
if(XInputGetState(i, &_state) == ERROR_SUCCESS) {
controllerId = i;
}
}
return controllerId != -1;
}
bool GamePad::IsPressed(WORD button)
{
RefreshState();
if(button == XINPUT_GAMEPAD_DPAD_LEFT && _state.Gamepad.sThumbLX < -XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE) {
_state.Gamepad.wButtons |= button;
} else if(button == XINPUT_GAMEPAD_DPAD_RIGHT && _state.Gamepad.sThumbLX > XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE) {
_state.Gamepad.wButtons |= button;
} else if(button == XINPUT_GAMEPAD_DPAD_UP && _state.Gamepad.sThumbLY > XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE) {
_state.Gamepad.wButtons |= button;
} else if(button == XINPUT_GAMEPAD_DPAD_DOWN && _state.Gamepad.sThumbLY < -XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE) {
_state.Gamepad.wButtons |= button;
}
2014-06-21 19:03:13 -04:00
return (_state.Gamepad.wButtons & button) != 0;
}