#pragma once

#include <cstdint>
#include <string>
#include <vector>

// API d'alt nivell per a llegir recursos. Prova primer el pack (si està
// carregat), després cau al fitxer solt dins `Jf::getResourceFolder()`
// si el fallback està activat.
namespace ResourceHelper {

    // Inicialitza el sistema. `pack_file` és la ruta absoluta (o relativa al
    // CWD) al fitxer de recursos. `enable_fallback` permet llegir de disc
    // quan el pack no conté l'entrada (útil per a Debug i WASM).
    auto initializeResourceSystem(const std::string& pack_file, bool enable_fallback) -> bool;

    // Allibera el pack carregat a memòria.
    void shutdownResourceSystem();

    // Llegeix un recurs per ruta relativa (p.ex. "gfx/logo.gif", "fonts/8bithud.fnt").
    // Retorna un vector buit si no es troba.
    auto loadFile(const std::string& relative_path) -> std::vector<uint8_t>;

    // True si el sistema es va inicialitzar amb un pack vàlid.
    [[nodiscard]] auto hasPack() -> bool;

}  // namespace ResourceHelper
