commit db84be96
Moved the event check into the gamecontroller code.
Changed files
| M | source/code/HelpGamepadState.cpp before |
| M | source/code/gamecontroller.cpp before |
| M | source/code/gamecontroller.h before |
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<std::string>& GetSupportedControllerNames();