fix(input): mou gamecontrollerdb.txt a l'arrel i el copia al build/ via CMake

This commit is contained in:
JailDesigner committed 2026-04-25 10:36:55 +02:00
1 parent c77f90f6b6
commit 91614fc545
4 files changed
+38 -11

No files matched your search

+13 -7
View File
@@ -149,16 +149,22 @@ void GamepadManager::init() {
<< SDL_GetError() << '\n';
return;
}
// `gamecontrollerdb.txt` és opcional. Si no existeix, SDL retorna -1 i
// continuem amb les definicions internes del sistema. Sempre informem
// del resultat per facilitar el diagnòstic de mandos no reconeguts.
static constexpr const char* DB_PATH = "data/input/gamecontrollerdb.txt";
const int ADDED = SDL_AddGamepadMappingsFromFile(DB_PATH);
// `gamecontrollerdb.txt` és opcional. Viu a l'arrel del projecte
// (no a `data/`) perquè SDL_AddGamepadMappingsFromFile només sap
// llegir del filesystem real, no del pack. CMake el copia al costat
// del binari a cada build perquè SDL_GetBasePath el trobi tant en
// dev com en release. Sempre informem del resultat per facilitar el
// diagnòstic de mandos no reconeguts.
std::string db_path = "gamecontrollerdb.txt";
if (const char* base = SDL_GetBasePath()) {
db_path = std::string(base) + "gamecontrollerdb.txt";
}
const int ADDED = SDL_AddGamepadMappingsFromFile(db_path.c_str());
if (ADDED < 0) {
std::cout << "GamepadManager: no s'ha pogut carregar " << DB_PATH
std::cout << "GamepadManager: no s'ha pogut carregar " << db_path
<< ": " << SDL_GetError() << '\n';
} else {
std::cout << "GamepadManager: " << ADDED << " mappings carregats de " << DB_PATH << '\n';
std::cout << "GamepadManager: " << ADDED << " mappings carregats de " << db_path << '\n';
}
int count = 0;