You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.0 KiB
77 lines
2.0 KiB
#include "controls/menu_controls.h" |
|
|
|
#include "controls/controller.h" |
|
|
|
namespace dvl { |
|
|
|
MenuAction GetMenuAction(const SDL_Event &event) |
|
{ |
|
const ControllerButtonEvent ctrl_event = ToControllerButtonEvent(event); |
|
sgbControllerActive = true; |
|
if (!ctrl_event.up) { |
|
switch (ctrl_event.button) { |
|
case ControllerButton::BUTTON_B: // Right button |
|
case ControllerButton::BUTTON_START: |
|
return MenuAction::SELECT; |
|
case ControllerButton::BUTTON_BACK: |
|
case ControllerButton::BUTTON_A: // Bottom button |
|
return MenuAction::BACK; |
|
case ControllerButton::BUTTON_X: // Left button |
|
return MenuAction::DELETE; |
|
case ControllerButton::BUTTON_DPAD_UP: |
|
return MenuAction::UP; |
|
case ControllerButton::BUTTON_DPAD_DOWN: |
|
return MenuAction::DOWN; |
|
case ControllerButton::BUTTON_DPAD_LEFT: |
|
return MenuAction::LEFT; |
|
case ControllerButton::BUTTON_DPAD_RIGHT: |
|
return MenuAction::RIGHT; |
|
case ControllerButton::BUTTON_LEFTSHOULDER: |
|
return MenuAction::PAGE_UP; |
|
case ControllerButton::BUTTON_RIGHTSHOULDER: |
|
return MenuAction::PAGE_DOWN; |
|
default: |
|
break; |
|
} |
|
} |
|
if (event.type < SDL_JOYAXISMOTION || event.type >= 0x700) |
|
sgbControllerActive = false; |
|
|
|
#if HAS_KBCTRL == 0 |
|
if (event.type == SDL_KEYDOWN) { |
|
switch (event.key.keysym.sym) { |
|
case SDLK_UP: |
|
return MenuAction::UP; |
|
case SDLK_DOWN: |
|
return MenuAction::DOWN; |
|
case SDLK_TAB: |
|
if (SDL_GetModState() & KMOD_SHIFT) |
|
return MenuAction::UP; |
|
else |
|
return MenuAction::DOWN; |
|
case SDLK_PAGEUP: |
|
return MenuAction::PAGE_UP; |
|
case SDLK_PAGEDOWN: |
|
return MenuAction::PAGE_DOWN; |
|
case SDLK_RETURN: |
|
case SDLK_KP_ENTER: |
|
case SDLK_SPACE: |
|
return MenuAction::SELECT; |
|
case SDLK_DELETE: |
|
return MenuAction::DELETE; |
|
case SDLK_LEFT: |
|
return MenuAction::LEFT; |
|
case SDLK_RIGHT: |
|
return MenuAction::RIGHT; |
|
case SDLK_ESCAPE: |
|
return MenuAction::BACK; |
|
default: |
|
break; |
|
} |
|
} |
|
#endif |
|
|
|
return MenuAction::NONE; |
|
} // namespace dvl |
|
|
|
} // namespace dvl
|
|
|