// resource_helper.cpp - Implementació de funciones de ajuda // © 2026 JailDesigner #include "resource_helper.hpp" #include #include #include "resource_loader.hpp" namespace Resource::Helper { // Inicialitzar el sistema de recursos auto initializeResourceSystem(const std::string& pack_file, bool fallback) -> bool { return Loader::get().initialize(pack_file, fallback); } // Carregar un file auto loadFile(const std::string& filepath) -> std::vector { // Normalitzar la ruta std::string normalized = normalizePath(filepath); // Carregar del sistema de recursos return Loader::get().loadResource(normalized); } // Comprovar si existeix un file auto fileExists(const std::string& filepath) -> bool { std::string normalized = normalizePath(filepath); return Loader::get().resourceExists(normalized); } // Obtenir ruta normalitzada per al paquet // Elimina prefixos "data/", rutes absolutes, etc. auto getPackPath(const std::string& asset_path) -> std::string { std::string path = asset_path; // Eliminar rutes absolutes (detectar / o C:\ al principi) if (!path.empty() && path[0] == '/') { // Buscar "data/" i agafar el que ve después size_t data_pos = path.find("/data/"); if (data_pos != std::string::npos) { path = path.substr(data_pos + 6); // Saltar "/data/" } } // Eliminar "./" i "../" del principi while (path.starts_with("./")) { path = path.substr(2); } while (path.starts_with("../")) { path = path.substr(3); } // Eliminar "data/" del principi if (path.starts_with("data/")) { path = path.substr(5); } // Eliminar "Resources/" (macOS bundles) if (path.starts_with("Resources/")) { path = path.substr(10); } // Convertir barres invertides a normals std::ranges::replace(path, '\\', '/'); return path; } // Normalitzar ruta (alias de getPackPath) auto normalizePath(const std::string& path) -> std::string { return getPackPath(path); } // Comprovar si hay paquet carregat auto isPackLoaded() -> bool { return Loader::get().isPackLoaded(); } } // namespace Resource::Helper