Add Joystick:getGamepadType.

Return value is "unknown", "xbox360", "xboxone", "ps3", "ps4", "ps5", "switchpro", or "virtual".
This commit is contained in:
Alex Szpakowski
2021-02-14 14:40:45 -04:00
parent 994cec9ee8
commit 1e27b1d6ed
5 changed files with 107 additions and 107 deletions
+51 -82
View File
@@ -42,102 +42,71 @@ float Joystick::clampval(float x)
return x;
}
bool Joystick::getConstant(const char *in, Joystick::Hat &out)
STRINGMAP_CLASS_BEGIN(Joystick, Joystick::Hat, Joystick::HAT_MAX_ENUM, hat)
{
return hats.find(in, out);
{ "c", Joystick::HAT_CENTERED },
{ "u", Joystick::HAT_UP },
{ "r", Joystick::HAT_RIGHT },
{ "d", Joystick::HAT_DOWN },
{ "l", Joystick::HAT_LEFT },
{ "ru", Joystick::HAT_RIGHTUP },
{ "rd", Joystick::HAT_RIGHTDOWN },
{ "lu", Joystick::HAT_LEFTUP },
{ "ld", Joystick::HAT_LEFTDOWN },
}
STRINGMAP_CLASS_END(Joystick, Joystick::Hat, Joystick::HAT_MAX_ENUM, hat)
bool Joystick::getConstant(Joystick::Hat in, const char *&out)
STRINGMAP_CLASS_BEGIN(Joystick, Joystick::GamepadType, Joystick::GAMEPAD_TYPE_MAX_ENUM, gamepadType)
{
return hats.find(in, out);
{ "unknown", Joystick::GAMEPAD_TYPE_UNKNOWN },
{ "xbox360", Joystick::GAMEPAD_TYPE_XBOX360 },
{ "xboxone", Joystick::GAMEPAD_TYPE_XBOXONE },
{ "ps3", Joystick::GAMEPAD_TYPE_PS3 },
{ "ps4", Joystick::GAMEPAD_TYPE_PS4 },
{ "ps5", Joystick::GAMEPAD_TYPE_PS5 },
{ "switchpro", Joystick::GAMEPAD_TYPE_NINTENDO_SWITCH_PRO },
{ "virtual", Joystick::GAMEPAD_TYPE_VIRTUAL },
}
STRINGMAP_CLASS_END(Joystick, Joystick::GamepadType, Joystick::GAMEPAD_TYPE_MAX_ENUM, gamepadType)
bool Joystick::getConstant(const char *in, Joystick::GamepadAxis &out)
STRINGMAP_CLASS_BEGIN(Joystick, Joystick::GamepadAxis, Joystick::GAMEPAD_AXIS_MAX_ENUM, gpAxis)
{
return gpAxes.find(in, out);
{ "leftx", Joystick::GAMEPAD_AXIS_LEFTX },
{ "lefty", Joystick::GAMEPAD_AXIS_LEFTY },
{ "rightx", Joystick::GAMEPAD_AXIS_RIGHTX },
{ "righty", Joystick::GAMEPAD_AXIS_RIGHTY },
{ "triggerleft", Joystick::GAMEPAD_AXIS_TRIGGERLEFT },
{ "triggerright", Joystick::GAMEPAD_AXIS_TRIGGERRIGHT },
}
STRINGMAP_CLASS_END(Joystick, Joystick::GamepadAxis, Joystick::GAMEPAD_AXIS_MAX_ENUM, gpAxis)
bool Joystick::getConstant(Joystick::GamepadAxis in, const char *&out)
STRINGMAP_CLASS_BEGIN(Joystick, Joystick::GamepadButton, Joystick::GAMEPAD_BUTTON_MAX_ENUM, gpButton)
{
return gpAxes.find(in, out);
{ "a", Joystick::GAMEPAD_BUTTON_A },
{ "b", Joystick::GAMEPAD_BUTTON_B },
{ "x", Joystick::GAMEPAD_BUTTON_X },
{ "y", Joystick::GAMEPAD_BUTTON_Y },
{ "back", Joystick::GAMEPAD_BUTTON_BACK },
{ "guide", Joystick::GAMEPAD_BUTTON_GUIDE },
{ "start", Joystick::GAMEPAD_BUTTON_START },
{ "leftstick", Joystick::GAMEPAD_BUTTON_LEFTSTICK },
{ "rightstick", Joystick::GAMEPAD_BUTTON_RIGHTSTICK },
{ "leftshoulder", Joystick::GAMEPAD_BUTTON_LEFTSHOULDER },
{ "rightshoulder", Joystick::GAMEPAD_BUTTON_RIGHTSHOULDER },
{ "dpup", Joystick::GAMEPAD_BUTTON_DPAD_UP },
{ "dpdown", Joystick::GAMEPAD_BUTTON_DPAD_DOWN },
{ "dpleft", Joystick::GAMEPAD_BUTTON_DPAD_LEFT },
{ "dpright", Joystick::GAMEPAD_BUTTON_DPAD_RIGHT },
}
STRINGMAP_CLASS_END(Joystick, Joystick::GamepadButton, Joystick::GAMEPAD_BUTTON_MAX_ENUM, gpButton)
bool Joystick::getConstant(const char *in, Joystick::GamepadButton &out)
STRINGMAP_CLASS_BEGIN(Joystick, Joystick::InputType, Joystick::INPUT_TYPE_MAX_ENUM, inputType)
{
return gpButtons.find(in, out);
{ "axis", Joystick::INPUT_TYPE_AXIS },
{ "button", Joystick::INPUT_TYPE_BUTTON },
{ "hat", Joystick::INPUT_TYPE_HAT },
}
bool Joystick::getConstant(Joystick::GamepadButton in, const char *&out)
{
return gpButtons.find(in, out);
}
bool Joystick::getConstant(const char *in, Joystick::InputType &out)
{
return inputTypes.find(in, out);
}
bool Joystick::getConstant(Joystick::InputType in, const char *&out)
{
return inputTypes.find(in, out);
}
StringMap<Joystick::Hat, Joystick::HAT_MAX_ENUM>::Entry Joystick::hatEntries[] =
{
{"c", Joystick::HAT_CENTERED},
{"u", Joystick::HAT_UP},
{"r", Joystick::HAT_RIGHT},
{"d", Joystick::HAT_DOWN},
{"l", Joystick::HAT_LEFT},
{"ru", Joystick::HAT_RIGHTUP},
{"rd", Joystick::HAT_RIGHTDOWN},
{"lu", Joystick::HAT_LEFTUP},
{"ld", Joystick::HAT_LEFTDOWN},
};
StringMap<Joystick::Hat, Joystick::HAT_MAX_ENUM> Joystick::hats(Joystick::hatEntries, sizeof(Joystick::hatEntries));
StringMap<Joystick::GamepadAxis, Joystick::GAMEPAD_AXIS_MAX_ENUM>::Entry Joystick::gpAxisEntries[] =
{
{"leftx", GAMEPAD_AXIS_LEFTX},
{"lefty", GAMEPAD_AXIS_LEFTY},
{"rightx", GAMEPAD_AXIS_RIGHTX},
{"righty", GAMEPAD_AXIS_RIGHTY},
{"triggerleft", GAMEPAD_AXIS_TRIGGERLEFT},
{"triggerright", GAMEPAD_AXIS_TRIGGERRIGHT},
};
StringMap<Joystick::GamepadAxis, Joystick::GAMEPAD_AXIS_MAX_ENUM> Joystick::gpAxes(Joystick::gpAxisEntries, sizeof(Joystick::gpAxisEntries));
StringMap<Joystick::GamepadButton, Joystick::GAMEPAD_BUTTON_MAX_ENUM>::Entry Joystick::gpButtonEntries[] =
{
{"a", GAMEPAD_BUTTON_A},
{"b", GAMEPAD_BUTTON_B},
{"x", GAMEPAD_BUTTON_X},
{"y", GAMEPAD_BUTTON_Y},
{"back", GAMEPAD_BUTTON_BACK},
{"guide", GAMEPAD_BUTTON_GUIDE},
{"start", GAMEPAD_BUTTON_START},
{"leftstick", GAMEPAD_BUTTON_LEFTSTICK},
{"rightstick", GAMEPAD_BUTTON_RIGHTSTICK},
{"leftshoulder", GAMEPAD_BUTTON_LEFTSHOULDER},
{"rightshoulder", GAMEPAD_BUTTON_RIGHTSHOULDER},
{"dpup", GAMEPAD_BUTTON_DPAD_UP},
{"dpdown", GAMEPAD_BUTTON_DPAD_DOWN},
{"dpleft", GAMEPAD_BUTTON_DPAD_LEFT},
{"dpright", GAMEPAD_BUTTON_DPAD_RIGHT},
};
StringMap<Joystick::GamepadButton, Joystick::GAMEPAD_BUTTON_MAX_ENUM> Joystick::gpButtons(Joystick::gpButtonEntries, sizeof(Joystick::gpButtonEntries));
StringMap<Joystick::InputType, Joystick::INPUT_TYPE_MAX_ENUM>::Entry Joystick::inputTypeEntries[] =
{
{"axis", Joystick::INPUT_TYPE_AXIS},
{"button", Joystick::INPUT_TYPE_BUTTON},
{"hat", Joystick::INPUT_TYPE_HAT},
};
StringMap<Joystick::InputType, Joystick::INPUT_TYPE_MAX_ENUM> Joystick::inputTypes(Joystick::inputTypeEntries, sizeof(Joystick::inputTypeEntries));
STRINGMAP_CLASS_END(Joystick, Joystick::InputType, Joystick::INPUT_TYPE_MAX_ENUM, inputType)
} // joystick
} // love