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.
75 lines
1.9 KiB
75 lines
1.9 KiB
|
7 years ago
|
#include "controls/menu_controls.h"
|
||
|
|
|
||
|
|
#include "controls/controller.h"
|
||
|
|
|
||
|
|
namespace dvl {
|
||
|
|
|
||
|
|
MenuAction GetMenuAction(const SDL_Event &event)
|
||
|
|
{
|
||
|
|
const ControllerButtonEvent ctrl_event = ToControllerButtonEvent(event);
|
||
|
|
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 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
|