diff --git a/source/code/HelpGamepadState.cpp b/source/code/HelpGamepadState.cpp index b4ebb37..3cfa6ed 100644 --- a/source/code/HelpGamepadState.cpp +++ b/source/code/HelpGamepadState.cpp @@ -81,21 +81,12 @@ bool HelpGamepadState::IsActive() { void HelpGamepadState::ProcessInput(const SDL_Event& event, bool& processed) { UpdateMouseCoordinates(event, globalData.mousex, globalData.mousey); - switch (event.type) { - case SDL_CONTROLLERDEVICEADDED: - case SDL_CONTROLLERDEVICEREMOVED: - case SDL_CONTROLLERDEVICEREMAPPED: - UnInitGameControllers(); - InitGameControllers(); - { - std::string s = getLabelForSupportedControllerNames(); - setHelpGamepadFont(&globalData.spriteHolder->GetDataHolder(), supportedControllers, s.c_str()); - } - break; - default: - //none - break; - }; + if (isGameControllerConnectionEvent(event)) { + UnInitGameControllers(); + InitGameControllers(); + std::string s = getLabelForSupportedControllerNames(); + setHelpGamepadFont(&globalData.spriteHolder->GetDataHolder(), supportedControllers, s.c_str()); + } if (isConfirmEvent(event) || isEscapeEvent(event)) { isActive = false; @@ -162,4 +153,4 @@ void HelpGamepadState::Update() { } } -} \ No newline at end of file +} diff --git a/source/code/gamecontroller.cpp b/source/code/gamecontroller.cpp index 368a34e..05a31a5 100644 --- a/source/code/gamecontroller.cpp +++ b/source/code/gamecontroller.cpp @@ -163,6 +163,16 @@ static bool skipThisPlayer(int playerNumber, const SDL_Event& event) { return true; } + +bool isGameControllerConnectionEvent(const SDL_Event& event) { + if ( event.type == SDL_CONTROLLERDEVICEADDED + || event.type == SDL_CONTROLLERDEVICEREMOVED + || event.type == SDL_CONTROLLERDEVICEREMAPPED ) { + return true; + } + return false; +} + bool isPlayerDownEvent(int playerNumber, const SDL_Event& event) { if (skipThisPlayer(playerNumber, event)) { return false; diff --git a/source/code/gamecontroller.h b/source/code/gamecontroller.h index 51f884a..749be39 100644 --- a/source/code/gamecontroller.h +++ b/source/code/gamecontroller.h @@ -39,6 +39,7 @@ bool isPlayerLeftEvent(int playerNumber, const SDL_Event& event); bool isPlayerRightEvent(int playerNumber, const SDL_Event& event); bool isPlayerSwitchEvent(int playerNumber, const SDL_Event& event); bool isPlayerPushEvent(int playerNumber, const SDL_Event& event); +bool isGameControllerConnectionEvent(const SDL_Event& event); void GameControllerSetVerbose(bool value); const std::vector& GetSupportedControllerNames();