-Several other fixes (bugfixes, refactoring, etc.) -Added a few more features to debugger
36 lines
1 KiB
C++
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;
|
|
}
|