// resource_loader.hpp - Carregador de recursos (Singleton) // © 2025 Port a C++20 amb SDL3 // Coordina càrrega des del paquet i/o sistema de fitxers #pragma once #include #include #include #include "resource_pack.hpp" namespace Resource { // Singleton per gestionar la càrrega de recursos class Loader { public: // Singleton static Loader& get(); // Inicialització bool initialize(const std::string& pack_file, bool enable_fallback); // Càrrega de recursos std::vector loadResource(const std::string& filename); bool resourceExists(const std::string& filename); // Validació bool validatePack(); bool isPackLoaded() const; // Estat void setBasePath(const std::string& path); std::string getBasePath() const; private: Loader() = default; ~Loader() = default; // No es pot copiar ni moure Loader(const Loader&) = delete; Loader& operator=(const Loader&) = delete; // Dades std::unique_ptr pack_; bool fallback_enabled_ = false; std::string base_path_; // Funcions auxiliars std::vector loadFromFilesystem(const std::string& filename); }; } // namespace Resource