fix(input): mou gamecontrollerdb.txt a l'arrel i el copia al build/ via CMake
This commit is contained in:
1 parent
c77f90f6b6
commit
91614fc545
4 files changed
+38
-11
No files matched your search
@@ -203,6 +203,26 @@ add_custom_command(
|
|||||||
add_custom_target(resource_pack ALL DEPENDS ${RESOURCE_PACK})
|
add_custom_target(resource_pack ALL DEPENDS ${RESOURCE_PACK})
|
||||||
add_dependencies(${PROJECT_NAME} resource_pack)
|
add_dependencies(${PROJECT_NAME} resource_pack)
|
||||||
|
|
||||||
|
# --- CÒPIA DE gamecontrollerdb.txt AL COSTAT DEL BINARI ---
|
||||||
|
# SDL_AddGamepadMappingsFromFile només llegeix del filesystem real (no del
|
||||||
|
# pack), així que el fitxer ha de viure al directori del binari. Es copia
|
||||||
|
# només si existeix per no fallar la build d'algú que encara no ha fet
|
||||||
|
# `make controllerdb`.
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/gamecontrollerdb.txt")
|
||||||
|
set(CONTROLLER_DB "${CMAKE_BINARY_DIR}/gamecontrollerdb.txt")
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CONTROLLER_DB}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
|
"${CMAKE_SOURCE_DIR}/gamecontrollerdb.txt"
|
||||||
|
"${CONTROLLER_DB}"
|
||||||
|
DEPENDS "${CMAKE_SOURCE_DIR}/gamecontrollerdb.txt"
|
||||||
|
COMMENT "Copiant gamecontrollerdb.txt → build/"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
add_custom_target(controller_db ALL DEPENDS ${CONTROLLER_DB})
|
||||||
|
add_dependencies(${PROJECT_NAME} controller_db)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic)
|
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic)
|
||||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||||
$<$<CONFIG:Debug>:_DEBUG>
|
$<$<CONFIG:Debug>:_DEBUG>
|
||||||
|
|||||||
@@ -62,12 +62,13 @@ pack:
|
|||||||
@./$(BUILDDIR)/pack_resources data $(BUILDDIR)/resources.pack
|
@./$(BUILDDIR)/pack_resources data $(BUILDDIR)/resources.pack
|
||||||
|
|
||||||
# Descàrrega de la base de dades de mappings de mandos. SDL només pot
|
# Descàrrega de la base de dades de mappings de mandos. SDL només pot
|
||||||
# obrir-la des del filesystem (no del pack), per això viu a data/input/.
|
# obrir-la des del filesystem (no del pack), per això viu a l'arrel del
|
||||||
|
# projecte i CMake la copia al costat del binari a cada build.
|
||||||
controllerdb:
|
controllerdb:
|
||||||
@echo "Descarregant gamecontrollerdb.txt..."
|
@echo "Descarregant gamecontrollerdb.txt..."
|
||||||
@curl -fsSL https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt \
|
@curl -fsSL https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt \
|
||||||
-o data/input/gamecontrollerdb.txt
|
-o gamecontrollerdb.txt
|
||||||
@echo "data/input/gamecontrollerdb.txt actualitzat"
|
@echo "gamecontrollerdb.txt actualitzat"
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# CODE QUALITY (delegados a cmake)
|
# CODE QUALITY (delegados a cmake)
|
||||||
@@ -118,7 +119,7 @@ help:
|
|||||||
@echo ""
|
@echo ""
|
||||||
@echo " Recursos:"
|
@echo " Recursos:"
|
||||||
@echo " make pack - Empaquetar data/ a $(BUILDDIR)/resources.pack (format AE26)"
|
@echo " make pack - Empaquetar data/ a $(BUILDDIR)/resources.pack (format AE26)"
|
||||||
@echo " make controllerdb - Descarregar data/input/gamecontrollerdb.txt actualitzat"
|
@echo " make controllerdb - Descarregar gamecontrollerdb.txt actualitzat (arrel)"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo " Qualitat de codi:"
|
@echo " Qualitat de codi:"
|
||||||
@echo " make format - Formatar codi amb clang-format"
|
@echo " make format - Formatar codi amb clang-format"
|
||||||
|
|||||||
File renamed without changes.
@@ -149,16 +149,22 @@ void GamepadManager::init() {
|
|||||||
<< SDL_GetError() << '\n';
|
<< SDL_GetError() << '\n';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// `gamecontrollerdb.txt` és opcional. Si no existeix, SDL retorna -1 i
|
// `gamecontrollerdb.txt` és opcional. Viu a l'arrel del projecte
|
||||||
// continuem amb les definicions internes del sistema. Sempre informem
|
// (no a `data/`) perquè SDL_AddGamepadMappingsFromFile només sap
|
||||||
// del resultat per facilitar el diagnòstic de mandos no reconeguts.
|
// llegir del filesystem real, no del pack. CMake el copia al costat
|
||||||
static constexpr const char* DB_PATH = "data/input/gamecontrollerdb.txt";
|
// del binari a cada build perquè SDL_GetBasePath el trobi tant en
|
||||||
const int ADDED = SDL_AddGamepadMappingsFromFile(DB_PATH);
|
// 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) {
|
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';
|
<< ": " << SDL_GetError() << '\n';
|
||||||
} else {
|
} else {
|
||||||
std::cout << "GamepadManager: " << ADDED << " mappings carregats de " << DB_PATH << '\n';
|
std::cout << "GamepadManager: " << ADDED << " mappings carregats de " << db_path << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|||||||
Reference in new issue
Block a user