diff --git a/source/texture.cpp b/source/texture.cpp index ce4e600..b24d141 100644 --- a/source/texture.cpp +++ b/source/texture.cpp @@ -367,16 +367,33 @@ auto Texture::readPalFile(const std::string &file_path) -> Palette { Palette palette{}; palette.fill(0); // Inicializar todo con 0 (transparente por defecto) - std::ifstream file(file_path); - if (!file.is_open()) { - throw std::runtime_error("No se pudo abrir el archivo .pal"); + // Intentar cargar desde ResourceHelper primero + auto resource_data = ResourceHelper::loadFile(file_path); + std::istringstream stream; + bool using_resource_data = false; + + if (!resource_data.empty()) { + std::string content(resource_data.begin(), resource_data.end()); + stream.str(content); + using_resource_data = true; } + + // Fallback a archivo directo + std::ifstream file; + if (!using_resource_data) { + file.open(file_path); + if (!file.is_open()) { + throw std::runtime_error("No se pudo abrir el archivo .pal"); + } + } + + std::istream& input_stream = using_resource_data ? stream : static_cast(file); std::string line; int line_number = 0; int color_index = 0; - while (std::getline(file, line)) { + while (std::getline(input_stream, line)) { ++line_number; // Ignorar las tres primeras lĂ­neas del archivo @@ -401,6 +418,8 @@ auto Texture::readPalFile(const std::string &file_path) -> Palette { } } - file.close(); + if (!using_resource_data && file.is_open()) { + file.close(); + } return palette; } \ No newline at end of file