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

#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