47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <filesystem>
|
|
#include <fstream>
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#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<uint8_t> 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 <typename T>
|
|
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<std::string>{}(asset_path));
|
|
std::ofstream temp_file(temp_path, std::ios::binary);
|
|
temp_file.write(reinterpret_cast<const char*>(data.data()), data.size());
|
|
temp_file.close();
|
|
|
|
T* result = loader_func(temp_path.c_str());
|
|
std::filesystem::remove(temp_path);
|
|
|
|
return result;
|
|
}
|
|
} // namespace ResourceHelper
|