resol ruta de resources.pack amb SDL_GetBasePath

This commit is contained in:
2026-05-14 19:16:15 +02:00
parent ce8eee07ff
commit ceb5324d23
+16 -5
View File
@@ -48,6 +48,16 @@ Director::Director(int argc, const char *argv[]) {
// Inicializa las opciones del programa (defaults + dispositivos d'entrada)
Options::init();
// Obtén la ruta del directori on viu l'executable (acabada amb '/').
// SDL_GetBasePath és independent del CWD i evita el `argv[0]` poc fiable.
#ifdef __EMSCRIPTEN__
// En Emscripten els assets viuen a l'arrel del MEMFS — no hi ha ruta real.
executablePath = "";
#else
const char *base_path = SDL_GetBasePath();
executablePath = (base_path != nullptr) ? base_path : "";
#endif
// Comprueba los parametros del programa (pot activar console)
checkProgramArguments(argc, argv);
@@ -81,7 +91,12 @@ Director::Director(int argc, const char *argv[]) {
#else
const bool enable_fallback = true;
#endif
if (!ResourceHelper::initializeResourceSystem("resources.pack", enable_fallback)) {
#ifdef MACOS_BUNDLE
const std::string pack_path = executablePath + "../Resources/resources.pack";
#else
const std::string pack_path = executablePath + "resources.pack";
#endif
if (!ResourceHelper::initializeResourceSystem(pack_path, enable_fallback)) {
std::cerr << "Fatal: resource system init failed (missing resources.pack?)" << std::endl;
exit(EXIT_FAILURE);
}
@@ -435,10 +450,6 @@ bool Director::setFileList() {
// Comprueba los parametros del programa
void Director::checkProgramArguments(int argc, const char *argv[]) {
// Establece la ruta del programa
executablePath = argv[0];
// Comprueba el resto de parametros
for (int i = 1; i < argc; ++i) {
if (strcmp(argv[i], "--console") == 0) {
Options::settings.console = true;