afegit suport Emscripten/WebAssembly al build system (milestone 4)
- createSystemFolder() adaptat per Emscripten (MEMFS, sense pwd.h/unistd.h) - initOptions() amb windowSize=1 i videoMode=0 per Emscripten - CMakeLists.txt: SDL3 via FetchContent per Emscripten, --preload-file data - Makefile: target wasm amb Docker (emscripten/emsdk) - Build de Linux verificat, segueix funcionant correctament Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,8 +4,10 @@
|
||||
#include <errno.h> // for errno, EEXIST, EACCES, ENAMETOO...
|
||||
#include <stdio.h> // for printf, perror
|
||||
#include <string.h> // for strcmp
|
||||
#ifndef __EMSCRIPTEN__
|
||||
#include <sys/stat.h> // for mkdir, stat, S_IRWXU
|
||||
#include <unistd.h> // for getuid
|
||||
#endif
|
||||
|
||||
#include <cstdlib> // for exit, EXIT_FAILURE, srand
|
||||
#include <fstream> // for basic_ostream, operator<<, basi...
|
||||
@@ -27,7 +29,7 @@
|
||||
#include "title.h" // for Title
|
||||
#include "utils.h" // for options_t, input_t, boolToString
|
||||
|
||||
#ifndef _WIN32
|
||||
#if !defined(_WIN32) && !defined(__EMSCRIPTEN__)
|
||||
#include <pwd.h>
|
||||
#endif
|
||||
|
||||
@@ -385,6 +387,12 @@ void Director::initOptions() {
|
||||
options->difficulty = DIFFICULTY_NORMAL;
|
||||
options->language = ba_BA;
|
||||
options->console = false;
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
// En Emscripten la ventana la gestiona el navegador
|
||||
options->windowSize = 1;
|
||||
options->videoMode = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Comprueba los parametros del programa
|
||||
@@ -402,7 +410,10 @@ void Director::checkProgramArguments(int argc, const char *argv[]) {
|
||||
|
||||
// Crea la carpeta del sistema donde guardar datos
|
||||
void Director::createSystemFolder(const std::string &folder) {
|
||||
#ifdef _WIN32
|
||||
#ifdef __EMSCRIPTEN__
|
||||
// En Emscripten usamos una carpeta en MEMFS (no persistente)
|
||||
systemFolder = "/config/" + folder;
|
||||
#elif _WIN32
|
||||
systemFolder = std::string(getenv("APPDATA")) + "/" + folder;
|
||||
#elif __APPLE__
|
||||
struct passwd *pw = getpwuid(getuid());
|
||||
@@ -424,6 +435,10 @@ void Director::createSystemFolder(const std::string &folder) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __EMSCRIPTEN__
|
||||
// En Emscripten no necesitamos crear carpetas (MEMFS las crea automáticamente)
|
||||
(void)folder;
|
||||
#else
|
||||
struct stat st = {0};
|
||||
if (stat(systemFolder.c_str(), &st) == -1) {
|
||||
errno = 0;
|
||||
@@ -453,6 +468,7 @@ void Director::createSystemFolder(const std::string &folder) {
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Carga el fichero de configuración
|
||||
|
||||
Reference in New Issue
Block a user