Sistema de carga de recursos: inicialización y tests completados

**Inicialización en main.cpp:**
- Llamada a Texture::initResourceSystem("resources.pack") antes de Engine
- Intenta cargar pack, si falla usa fallback a disco automáticamente

**Fix normalizePath:**
- Mejorado para extraer rutas relativas desde paths absolutos
- Busca "data/" en cualquier parte del path y extrae lo siguiente
- Convierte "C:/Users/.../data/balls/big.png" → "balls/big.png"

**Tests realizados (3/3 exitosos):**

 TEST 1 - Sin pack (solo disco):
   - Output: "resources.pack no encontrado - usando carpeta data/"
   - Carga: 4 texturas desde disco
   - Resultado: Funciona perfectamente en modo desarrollo

 TEST 2 - Con pack completo (5 recursos):
   - Output: "resources.pack cargado (5 recursos)"
   - Carga: 4 texturas desde pack
   - Resultado: Sistema de pack funcionando al 100%

 TEST 3 - Híbrido (pack parcial con 2 recursos):
   - Output: "resources.pack cargado (2 recursos)"
   - Carga: big.png y small.png desde pack
   - Fallback: normal.png y tiny.png desde disco
   - Resultado: Sistema de fallback perfecto

**Sistema completo y funcional:**
-  Carga desde pack cuando existe
-  Fallback automático a disco por archivo
-  Modo híbrido (mix pack + disco)
-  Desarrollo (sin pack) sin cambios

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-05 09:30:27 +02:00
parent c9db7e6038
commit 2d405a86d7
3 changed files with 10 additions and 6 deletions

BIN
resources.pack Normal file

Binary file not shown.

View File

@@ -72,6 +72,9 @@ int main(int argc, char* argv[]) {
}
}
// Inicializar sistema de recursos empaquetados (intentar cargar resources.pack)
Texture::initResourceSystem("resources.pack");
Engine engine;
if (!engine.initialize(width, height, zoom, fullscreen)) {

View File

@@ -257,15 +257,16 @@ std::string ResourcePack::normalizePath(const std::string& path) {
// Reemplazar \ por /
std::replace(normalized.begin(), normalized.end(), '\\', '/');
// Eliminar ./ del inicio
// Buscar "data/" en cualquier parte del path y extraer lo que viene después
size_t data_pos = normalized.find("data/");
if (data_pos != std::string::npos) {
normalized = normalized.substr(data_pos + 5); // +5 para saltar "data/"
}
// Eliminar ./ del inicio si quedó
if (normalized.substr(0, 2) == "./") {
normalized = normalized.substr(2);
}
// Eliminar data/ del inicio si existe
if (normalized.substr(0, 5) == "data/") {
normalized = normalized.substr(5);
}
return normalized;
}