resol ruta de resources.pack amb SDL_GetBasePath
This commit is contained in:
@@ -48,6 +48,16 @@ Director::Director(int argc, const char *argv[]) {
|
|||||||
// Inicializa las opciones del programa (defaults + dispositivos d'entrada)
|
// Inicializa las opciones del programa (defaults + dispositivos d'entrada)
|
||||||
Options::init();
|
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)
|
// Comprueba los parametros del programa (pot activar console)
|
||||||
checkProgramArguments(argc, argv);
|
checkProgramArguments(argc, argv);
|
||||||
|
|
||||||
@@ -81,7 +91,12 @@ Director::Director(int argc, const char *argv[]) {
|
|||||||
#else
|
#else
|
||||||
const bool enable_fallback = true;
|
const bool enable_fallback = true;
|
||||||
#endif
|
#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;
|
std::cerr << "Fatal: resource system init failed (missing resources.pack?)" << std::endl;
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@@ -435,10 +450,6 @@ bool Director::setFileList() {
|
|||||||
|
|
||||||
// Comprueba los parametros del programa
|
// Comprueba los parametros del programa
|
||||||
void Director::checkProgramArguments(int argc, const char *argv[]) {
|
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) {
|
for (int i = 1; i < argc; ++i) {
|
||||||
if (strcmp(argv[i], "--console") == 0) {
|
if (strcmp(argv[i], "--console") == 0) {
|
||||||
Options::settings.console = true;
|
Options::settings.console = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user