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.
63 lines
1.3 KiB
63 lines
1.3 KiB
|
6 years ago
|
#include "controls/controller.h"
|
||
|
|
|
||
|
|
#include "controls/devices/kbcontroller.h"
|
||
|
|
#include "controls/devices/joystick.h"
|
||
|
|
#include "controls/devices/game_controller.h"
|
||
|
|
|
||
|
|
namespace dvl {
|
||
|
|
|
||
|
|
ControllerButtonEvent ToControllerButtonEvent(const SDL_Event &event)
|
||
|
|
{
|
||
|
|
ControllerButtonEvent result{ ControllerButton::NONE, false };
|
||
|
|
switch (event.type) {
|
||
|
|
#ifndef USE_SDL1
|
||
|
|
case SDL_CONTROLLERBUTTONUP:
|
||
|
|
#endif
|
||
|
|
case SDL_JOYBUTTONUP:
|
||
|
|
case SDL_KEYUP:
|
||
|
|
result.up = true;
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
#if HAS_KBCTRL == 1
|
||
|
|
result.button = KbCtrlToControllerButton(event);
|
||
|
|
if (result.button != ControllerButton::NONE)
|
||
|
|
return result;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifndef USE_SDL1
|
||
|
|
result.button = GameControllerToControllerButton(event);
|
||
|
|
if (result.button != ControllerButton::NONE)
|
||
|
|
return result;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
result.button = JoyButtonToControllerButton(event);
|
||
|
|
|
||
|
|
return result;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool IsControllerButtonPressed(ControllerButton button)
|
||
|
|
{
|
||
|
|
bool result = false;
|
||
|
|
#ifndef USE_SDL1
|
||
|
|
result = result || IsGameControllerButtonPressed(button);
|
||
|
|
#endif
|
||
|
|
#if HAS_KBCTRL == 1
|
||
|
|
result = result || IsKbCtrlButtonPressed(button);
|
||
|
|
#endif
|
||
|
|
result = result || IsJoystickButtonPressed(button);
|
||
|
|
return result;
|
||
|
|
}
|
||
|
|
|
||
|
|
void InitController()
|
||
|
|
{
|
||
|
|
InitJoystick();
|
||
|
|
#ifndef USE_SDL1
|
||
|
|
InitGameController();
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
} // namespace dvl
|