1+ #include " ControllerInput.h"
2+
3+ namespace VBA10
4+ {
5+ ControllerInput::ControllerInput (int index)
6+ : xboxPad(new CXBOXController(index))
7+ {
8+ ZeroMemory (&state, sizeof (ControllerState));
9+ }
10+
11+ ControllerInput::~ControllerInput (void )
12+ {
13+ delete this ->xboxPad ;
14+ }
15+
16+ const ControllerState *ControllerInput::GetControllerState (void )
17+ {
18+ return &this ->state ;
19+ }
20+
21+ void ControllerInput::Update (void )
22+ {
23+ if (this ->xboxPad ->IsConnected ())
24+ {
25+ XINPUT_STATE state = this ->xboxPad ->GetState ();
26+
27+ this ->state .LeftPressed = ((state.Gamepad .wButtons & XINPUT_GAMEPAD_DPAD_LEFT) || (state.Gamepad .sThumbLX < (-XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE)));
28+ this ->state .RightPressed = ((state.Gamepad .wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) || (state.Gamepad .sThumbLX > (XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE)));
29+ this ->state .UpPressed = ((state.Gamepad .wButtons & XINPUT_GAMEPAD_DPAD_UP) || (state.Gamepad .sThumbLY > (XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE)));
30+ this ->state .DownPressed = ((state.Gamepad .wButtons & XINPUT_GAMEPAD_DPAD_DOWN) || (state.Gamepad .sThumbLY < (-XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE)));
31+
32+ this ->state .StartPressed = (state.Gamepad .wButtons & XINPUT_GAMEPAD_START);
33+ this ->state .SelectPressed = (state.Gamepad .wButtons & XINPUT_GAMEPAD_BACK);
34+
35+ this ->state .APressed = (state.Gamepad .wButtons & XINPUT_GAMEPAD_B);
36+ this ->state .BPressed = (state.Gamepad .wButtons & XINPUT_GAMEPAD_A);
37+ this ->state .YPressed = (state.Gamepad .wButtons & XINPUT_GAMEPAD_X);
38+ this ->state .XPressed = (state.Gamepad .wButtons & XINPUT_GAMEPAD_Y);
39+ this ->state .LPressed = (state.Gamepad .wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER);
40+ this ->state .RPressed = (state.Gamepad .wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER);
41+
42+ this ->state .TurboPressed = ((state.Gamepad .bLeftTrigger > XINPUT_GAMEPAD_TRIGGER_THRESHOLD) || (state.Gamepad .bRightTrigger > XINPUT_GAMEPAD_TRIGGER_THRESHOLD));
43+ this ->state .TurboTogglePressed = this ->state .XPressed || this ->state .YPressed ;
44+ }else
45+ {
46+ ZeroMemory (&this ->state , sizeof (ControllerState));
47+ }
48+ }
49+
50+ }
0 commit comments