#pragma once #include #include #include 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. auto loadFile(const std::string& filepath) -> std::vector; } // namespace Resource::Helper