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