#pragma once #include // Para size_t #include // Para uint8_t #include // Para unique_ptr #include // Para string, basic_string #include // Para vector class ResourcePack; class ResourceLoader { private: static std::unique_ptr instance; ResourcePack* resource_pack_; std::string pack_path_; bool fallback_to_files_; ResourceLoader(); public: static auto getInstance() -> ResourceLoader&; ~ResourceLoader(); auto initialize(const std::string& pack_file, bool enable_fallback = true) -> bool; void shutdown(); auto loadResource(const std::string& filename) -> std::vector; auto resourceExists(const std::string& filename) -> bool; void setFallbackToFiles(bool enable) { fallback_to_files_ = enable; } [[nodiscard]] auto getFallbackToFiles() const -> bool { return fallback_to_files_; } [[nodiscard]] auto getLoadedResourceCount() const -> size_t; [[nodiscard]] auto getAvailableResources() const -> std::vector; private: auto loadFromFile(const std::string& filename) -> std::vector; static auto getDataPath(const std::string& filename) -> std::string; };