From 72da5208e276ff1bdc0ee9a7dd1be15e10174e0f Mon Sep 17 00:00:00 2001 From: ackimixs Date: Wed, 15 May 2024 22:28:38 +0200 Subject: [PATCH] map that handle double --- GameControllerHandler.h | 12 ++++++------ utils.h | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/GameControllerHandler.h b/GameControllerHandler.h index e790bf2..5ae0ddb 100644 --- a/GameControllerHandler.h +++ b/GameControllerHandler.h @@ -41,21 +41,21 @@ public: if (tokens[1] == "all" || tokens[1] == "gc") { if (tokens[2] == "stop proximity") { std::vector args = Utils::split(tokens[3], ","); - int distance = stoi(args[0]); + double distance = stod(args[0]); Uint16 strength; - if (distance <= 200) { + if (distance <= 100) { strength = 0xFFFF; } else if (distance <= 500) { - double factor = 1.0 - static_cast(distance - 200) / (500 - 200); + double factor = 1 - Utils::mapValue(distance, 100.0, 500.0, 0.0, 1.0); strength = static_cast(factor * 0xFFFF); } else { strength = 0; } - // if (SDL_GameControllerRumble(controller, strength, strength, 1000) != 0) { - // std::cerr << "Erreur lors de l'activation de la vibration : " << SDL_GetError() << std::endl; - // } + if (SDL_GameControllerRumble(controller, strength, strength, 1000) != 0) { + std::cerr << "Erreur lors de l'activation de la vibration : " << SDL_GetError() << std::endl; + } } if (tokens[2] == "ready") { diff --git a/utils.h b/utils.h index 8e1f019..e6ae5d8 100644 --- a/utils.h +++ b/utils.h @@ -37,4 +37,9 @@ namespace Utils { } while (pos < str.length() && prev < str.length()); return tokens; } + + template + T mapValue(T v, T v_min, T v_max, T v_min_prime, T v_max_prime) { + return v_min_prime + (((v - v_min) * (v_max_prime - v_min_prime)) / (v_max - v_min)); + } } \ No newline at end of file