MCPcopy Create free account
hub / github.com/diasurgical/DevilutionX / ToControllerButtonEvents

Function ToControllerButtonEvents

Source/controls/controller.cpp:29–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27}
28
29StaticVector<ControllerButtonEvent, 4> ToControllerButtonEvents(const SDL_Event &event)
30{
31 ControllerButtonEvent result { ControllerButton_NONE, false };
32 switch (event.type) {
33#ifndef USE_SDL1
34 case SDL_CONTROLLERBUTTONUP:
35#endif
36 case SDL_JOYBUTTONUP:
37 case SDL_KEYUP:
38 result.up = true;
39 break;
40 default:
41 break;
42 }
43#if HAS_KBCTRL == 1
44 if (!demo::IsRunning()) {
45 result.button = KbCtrlToControllerButton(event);
46 if (result.button != ControllerButton_NONE)
47 return { result };
48 }
49#endif
50#ifndef USE_SDL1
51 GameController *const controller = GameController::Get(event);
52 if (controller != nullptr) {
53 result.button = controller->ToControllerButton(event);
54 if (result.button != ControllerButton_NONE) {
55 if (result.button == ControllerButton_AXIS_TRIGGERLEFT || result.button == ControllerButton_AXIS_TRIGGERRIGHT) {
56 result.up = !controller->IsPressed(result.button);
57 }
58 return { result };
59 }
60 }
61#endif
62
63 const Joystick *joystick = Joystick::Get(event);
64 if (joystick != nullptr) {
65 return devilution::Joystick::ToControllerButtonEvents(event);
66 }
67
68 return { result };
69}
70
71bool IsControllerButtonPressed(ControllerButton button)
72{

Callers 4

GameEventHandlerFunction · 0.85
play_movieFunction · 0.85
GetMenuActionsFunction · 0.85
UiSettingsMenuFunction · 0.85

Calls 4

KbCtrlToControllerButtonFunction · 0.85
ToControllerButtonMethod · 0.80
IsRunningFunction · 0.50
IsPressedMethod · 0.45

Tested by

no test coverage detected