From 0248614add99c1df1bc7c9ff97091f678ff75aca Mon Sep 17 00:00:00 2001 From: Ameer Date: Sun, 21 Jun 2020 12:36:28 -0400 Subject: GC Adapter Implementation --- src/input_common/sdl/sdl_impl.cpp | 53 +++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 16 deletions(-) (limited to 'src/input_common/sdl/sdl_impl.cpp') diff --git a/src/input_common/sdl/sdl_impl.cpp b/src/input_common/sdl/sdl_impl.cpp index 675b477fa..3c1820c4a 100644 --- a/src/input_common/sdl/sdl_impl.cpp +++ b/src/input_common/sdl/sdl_impl.cpp @@ -49,7 +49,8 @@ static int SDLEventWatcher(void* user_data, SDL_Event* event) { class SDLJoystick { public: SDLJoystick(std::string guid_, int port_, SDL_Joystick* joystick) - : guid{std::move(guid_)}, port{port_}, sdl_joystick{joystick, &SDL_JoystickClose} {} + : guid{std::move(guid_)}, port{port_}, sdl_joystick{joystick, &SDL_JoystickClose} { + } void SetButton(int button, bool value) { std::lock_guard lock{mutex}; @@ -97,6 +98,7 @@ public: std::lock_guard lock{mutex}; return (state.hats.at(hat) & direction) != 0; } + /** * The guid of the joystick */ @@ -125,6 +127,7 @@ private: std::unordered_map axes; std::unordered_map hats; } state; + std::string guid; int port; std::unique_ptr sdl_joystick; @@ -155,7 +158,8 @@ std::shared_ptr SDLState::GetSDLJoystickBySDLID(SDL_JoystickID sdl_ if (map_it != joystick_map.end()) { const auto vec_it = std::find_if(map_it->second.begin(), map_it->second.end(), - [&sdl_joystick](const std::shared_ptr& joystick) { + [&sdl_joystick](const std::shared_ptr& joystick) + { return sdl_joystick == joystick->GetSDLJoystick(); }); if (vec_it != map_it->second.end()) { @@ -166,7 +170,8 @@ std::shared_ptr SDLState::GetSDLJoystickBySDLID(SDL_JoystickID sdl_ // Search for a SDLJoystick without a mapped SDL_Joystick... const auto nullptr_it = std::find_if(map_it->second.begin(), map_it->second.end(), - [](const std::shared_ptr& joystick) { + [](const std::shared_ptr& joystick) + { return !joystick->GetSDLJoystick(); }); if (nullptr_it != map_it->second.end()) { @@ -223,7 +228,8 @@ void SDLState::CloseJoystick(SDL_Joystick* sdl_joystick) { const auto& joystick_guid_list = joystick_map[guid]; const auto joystick_it = std::find_if(joystick_guid_list.begin(), joystick_guid_list.end(), - [&sdl_joystick](const std::shared_ptr& joystick) { + [&sdl_joystick](const std::shared_ptr& joystick) + { return joystick->GetSDLJoystick() == sdl_joystick; }); joystick = *joystick_it; @@ -279,7 +285,8 @@ void SDLState::CloseJoysticks() { class SDLButton final : public Input::ButtonDevice { public: explicit SDLButton(std::shared_ptr joystick_, int button_) - : joystick(std::move(joystick_)), button(button_) {} + : joystick(std::move(joystick_)), button(button_) { + } bool GetStatus() const override { return joystick->GetButton(button); @@ -293,7 +300,8 @@ private: class SDLDirectionButton final : public Input::ButtonDevice { public: explicit SDLDirectionButton(std::shared_ptr joystick_, int hat_, Uint8 direction_) - : joystick(std::move(joystick_)), hat(hat_), direction(direction_) {} + : joystick(std::move(joystick_)), hat(hat_), direction(direction_) { + } bool GetStatus() const override { return joystick->GetHatDirection(hat, direction); @@ -310,7 +318,8 @@ public: explicit SDLAxisButton(std::shared_ptr joystick_, int axis_, float threshold_, bool trigger_if_greater_) : joystick(std::move(joystick_)), axis(axis_), threshold(threshold_), - trigger_if_greater(trigger_if_greater_) {} + trigger_if_greater(trigger_if_greater_) { + } bool GetStatus() const override { const float axis_value = joystick->GetAxis(axis); @@ -330,7 +339,8 @@ private: class SDLAnalog final : public Input::AnalogDevice { public: SDLAnalog(std::shared_ptr joystick_, int axis_x_, int axis_y_, float deadzone_) - : joystick(std::move(joystick_)), axis_x(axis_x_), axis_y(axis_y_), deadzone(deadzone_) {} + : joystick(std::move(joystick_)), axis_x(axis_x_), axis_y(axis_y_), deadzone(deadzone_) { + } std::tuple GetStatus() const override { const auto [x, y] = joystick->GetAnalog(axis_x, axis_y); @@ -368,7 +378,9 @@ private: /// A button device factory that creates button devices from SDL joystick class SDLButtonFactory final : public Input::Factory { public: - explicit SDLButtonFactory(SDLState& state_) : state(state_) {} + explicit SDLButtonFactory(SDLState& state_) + : state(state_) { + } /** * Creates a button device from a joystick button @@ -443,7 +455,10 @@ private: /// An analog device factory that creates analog devices from SDL joystick class SDLAnalogFactory final : public Input::Factory { public: - explicit SDLAnalogFactory(SDLState& state_) : state(state_) {} + explicit SDLAnalogFactory(SDLState& state_) + : state(state_) { + } + /** * Creates analog device from joystick axes * @param params contains parameters for creating the device: @@ -490,7 +505,8 @@ SDLState::SDLState() { initialized = true; if (start_thread) { - poll_thread = std::thread([this] { + poll_thread = std::thread([this] + { using namespace std::chrono_literals; while (initialized) { SDL_PumpEvents(); @@ -576,7 +592,9 @@ namespace Polling { class SDLPoller : public InputCommon::Polling::DevicePoller { public: - explicit SDLPoller(SDLState& state_) : state(state_) {} + explicit SDLPoller(SDLState& state_) + : state(state_) { + } void Start() override { state.event_queue.Clear(); @@ -593,7 +611,9 @@ protected: class SDLButtonPoller final : public SDLPoller { public: - explicit SDLButtonPoller(SDLState& state_) : SDLPoller(state_) {} + explicit SDLButtonPoller(SDLState& state_) + : SDLPoller(state_) { + } Common::ParamPackage GetNextInput() override { SDL_Event event; @@ -602,8 +622,7 @@ public: case SDL_JOYAXISMOTION: if (std::abs(event.jaxis.value / 32767.0) < 0.5) { break; - } - [[fallthrough]]; + }[[fallthrough]]; case SDL_JOYBUTTONUP: case SDL_JOYHATMOTION: return SDLEventToButtonParamPackage(state, event); @@ -615,7 +634,9 @@ public: class SDLAnalogPoller final : public SDLPoller { public: - explicit SDLAnalogPoller(SDLState& state_) : SDLPoller(state_) {} + explicit SDLAnalogPoller(SDLState& state_) + : SDLPoller(state_) { + } void Start() override { SDLPoller::Start(); -- cgit v1.2.3