#pragma once #include #include #include #include #include #include "resource_loader.h" // Helper functions para integrar ResourceLoader con el sistema existente namespace ResourceHelper { // Inicializa ResourceLoader (llamar al inicio del programa) bool initializeResourceSystem(const std::string& pack_file = "resources.pack"); // Cierra ResourceLoader void shutdownResourceSystem(); // Carga un archivo usando ResourceLoader o fallback a filesystem std::vector loadFile(const std::string& filepath); // Verifica si un archivo debería cargarse del pack vs filesystem bool shouldUseResourcePack(const std::string& filepath); // Convierte ruta Asset a ruta relativa para ResourceLoader std::string getPackPath(const std::string& asset_path); // Wrappea la carga de archivos para mantener compatibilidad template T* loadResourceFile(const std::string& asset_path, T* (*loader_func)(const char*)) { auto data = loadFile(asset_path); if (data.empty()) { return loader_func(asset_path.c_str()); } // Crear archivo temporal para funciones que esperan path std::string temp_path = "/tmp/ccae_" + std::to_string(std::hash{}(asset_path)); std::ofstream temp_file(temp_path, std::ios::binary); temp_file.write(reinterpret_cast(data.data()), data.size()); temp_file.close(); T* result = loader_func(temp_path.c_str()); std::filesystem::remove(temp_path); return result; } } // namespace ResourceHelper