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

+23 -13
View File
@@ -6,23 +6,33 @@
namespace Resource::Helper {
// Estableix el prefix absolut des d'on es resolen totes les rutes
// relatives passades a `loadFile`/`resolve`. Pensat per a cridar-se una
// sola vegada al primer pas del Director amb `SDL_GetBasePath()`: així el
// binari troba `data/` sense dependre del CWD des d'on s'ha llançat (és
// obligatori per a .app de macOS i útil a Linux per no haver d'estar
// dins de `build/`).
// Inicialitza el sistema de recursos. Carrega el pack des de `pack_file`
// i decideix si `loadFile` pot caure a disc quan un recurs no és al pack.
// En Release el pack és obligatori: passar `enable_fallback=false` fa
// que `initializeResourceSystem` retorne false si no s'ha pogut carregar.
auto initializeResourceSystem(const std::string& pack_file, bool enable_fallback) -> bool;
// Allibera el pack carregat a memòria.
void shutdownResourceSystem();
// True si el sistema es va inicialitzar amb un pack vàlid.
[[nodiscard]] auto hasPack() -> bool;
// Estableix el prefix des d'on es resolen les rutes quan el fallback
// llig de disc. En Debug apunta al source tree (`${CMAKE_SOURCE_DIR}/`)
// perquè editar YAML/GIF dins `data/` es vegi reflectit sense re-packejar.
// En Release el fallback està desactivat i aquest camí no es fa servir.
void setDataRoot(const std::string& absolute_path);
// Resol una ruta relativa contra el data root. Si la ruta ja és absoluta
// (comença per '/') la retorna sense modificar — així els fitxers de
// config (system_folder_ + "config.yaml") segueixen funcionant sense
// canvis al call site.
// Resol una ruta relativa contra el data root. Si ja és absoluta
// (comença per '/') la retorna sense modificar. S'usa per a rutes que
// NO passen pel pack (p.ex. fitxers de config dins system_folder_).
[[nodiscard]] auto resolve(const std::string& filepath) -> std::string;
// Carga un fitxer del filesystem (a aquesta fase encara no hi ha pack).
// Les rutes relatives es resolen via `resolve()`; les absolutes s'obrin
// directament.
// Carrega un recurs pel seu camí relatiu (p.ex. "fonts/hud.gif",
// "input/keys.yaml"). Prova primer el pack; si no hi és i el fallback
// està actiu, cau a disc (data root + ruta). Retorna vector buit si
// no el troba.
auto loadFile(const std::string& filepath) -> std::vector<std::uint8_t>;
} // namespace Resource::Helper