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:
BIN
resources.pack
Normal file
BIN
resources.pack
Normal file
Binary file not shown.
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user