49 lines
2.2 KiB
C++
49 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace Resource::Helper {
|
|
|
|
// 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 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;
|
|
|
|
// 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. Si `preferDisk()` és true (Debug), inverteix la
|
|
// prioritat: prova disc abans del pack.
|
|
auto loadFile(const std::string& filepath) -> std::vector<std::uint8_t>;
|
|
|
|
// Inverteix la prioritat de `loadFile` (disc abans que pack). En Debug
|
|
// s'activa per defecte al `initializeResourceSystem` perquè cada
|
|
// canvi al YAML/GIF al source tree es vegi sense re-packejar — és el
|
|
// que necessita l'editor in-game per veure les seues edicions
|
|
// immediatament al recarregar la sala. En Release no té efecte
|
|
// (el fallback està desactivat).
|
|
void setPreferDisk(bool prefer);
|
|
[[nodiscard]] auto preferDisk() -> bool;
|
|
|
|
} // namespace Resource::Helper
|