Mesen-X/Windows/GamePad.cpp
Souryo 48409ae82b -Rewrote entire GUI in .NET
-Several other fixes (bugfixes, refactoring, etc.)
-Added a few more features to debugger
2015-07-01 23:17:14 -04:00

36 lines
1 KiB
C++

#include "stdafx.h"
#include "GamePad.h"
GamePad::GamePad()
{
}
bool GamePad::RefreshState()
{
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;
}
return (_state.Gamepad.wButtons & button) != 0;
}