chore(release): v0.21.0 — empaquetat de recursos (AE26) i neteja de fonts

- Nou format de pack AE26 v1 (XOR + djb2), eina `pack_resources`,
  regeneració automàtica de `build/resources.pack` a cada build.
- `Resource::Helper` amb init/shutdown, fallback a disc només en Debug
  (apunta al source tree); Release exigeix pack present.
- Callers de YAML migrats a `loadFile`+deserialize des de buffer.
- Arrel neta: el pack viu a `build/`, eliminat `sync_data`.
- Placeholder font -> `ari-w9500-condensed-display`; esborrades variants
  bold/condensed no usades a `data/fonts/`.
This commit is contained in:
JailDesigner committed 2026-04-23 08:51:21 +02:00
1 parent aeed0e01c2
commit 4da05b3d76
24 files changed
+574 -625

No files matched your search

+19 -5
View File
@@ -40,13 +40,26 @@ Director::Director() {
std::fprintf(stderr, "SDL_Init failed: %s\n", SDL_GetError());
}
// Rutes dels recursos relatives a l'executable, no al CWD. SDL_GetBasePath
// retorna la carpeta del binari al desplegament portable i Contents/
// Resources/ dins d'un .app a macOS. Ha de fer-se abans de qualsevol
// loader que passi per Resource::Helper::resolve (Locale, KeyConfig,
// Resource::Cache, PaletteLoader, etc.).
// Sistema de recursos: el pack viu al costat del binari (build/), el
// regenera CMake a cada build. En Debug habilitem el fallback a disc
// apuntant al source tree perquè editar YAML/GIF dins `data/` es vegi
// sense re-packejar; en Release el pack és obligatori.
std::string pack_file = "resources.pack";
if (const char* base = SDL_GetBasePath()) {
pack_file = std::string(base) + "resources.pack";
#ifndef _DEBUG
Resource::Helper::setDataRoot(base);
#endif
}
#ifdef _DEBUG
Resource::Helper::setDataRoot(AEE_SOURCE_DIR);
constexpr bool ENABLE_FALLBACK = true;
#else
constexpr bool ENABLE_FALLBACK = false;
#endif
if (!Resource::Helper::initializeResourceSystem(pack_file, ENABLE_FALLBACK)) {
std::fprintf(stderr, "Director: sistema de recursos no disponible; avortem\n");
std::exit(1);
}
// Prepara la carpeta de sistema (~/.config/jailgames/aee_2026/) i carrega
@@ -207,6 +220,7 @@ Director::~Director() {
// desfà les llibreries abans que corren els destructors estàtics.
current_scene_.reset();
Resource::Cache::get().clearAudio();
Resource::Helper::shutdownResourceSystem();
GamepadManager::get().shutdown();
Audio::destroy();
Screen::get().shutdown();