From 2d405a86d7f79951c427bde584753d131a67c5d7 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 5 Oct 2025 09:30:27 +0200 Subject: [PATCH] =?UTF-8?q?Sistema=20de=20carga=20de=20recursos:=20inicial?= =?UTF-8?q?izaci=C3=B3n=20y=20tests=20completados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **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 --- resources.pack | Bin 0 -> 1355 bytes source/main.cpp | 3 +++ source/resource_pack.cpp | 13 +++++++------ 3 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 resources.pack diff --git a/resources.pack b/resources.pack new file mode 100644 index 0000000000000000000000000000000000000000..672954ca5419d64aa90bb333534ca6eefa831ddd GIT binary patch literal 1355 zcmWG@ay4dTU|?VcVqPFlO3cYA)=$bz*DJ_NUj-D{2*m29_YVlbCG+x&auahv^3gz@ zD}mw>>nC&a!{v*CvS4WzCI*Hops>5xOJhE`bV+7jB}j7}P&OGT`p<^rod}RF&PXgs zE!NLU%*;to%uOu@sd)%glLf>N_UK*g4DfU3<&xq8D&_U`a0vp^AU6qcumMT=&;JvF z6k~CayA#8@b22Z1oNP}Q#}JF&qrr}R4F(*^{}}%Lcl*^+c}Zi#+G8%&%@>w2-b!I8 ze}DbfnJClgv)BVe^J^J`7f#;eR1!8R+{tr^(q^UTl0~bS6y7GZJbO1+wvS0W78<8QBdp@`R|_zxoljdP z#Au-W@p0&?t>^Cjo|Z3kTHA83mB3PwdUe5x*KSSUfAl`X2fK}rque6TS;{je^Xy-G zEM?x$2mFtey2G8V42=jl6cnaxV23_9^WFp9p(Y@Qa?FhFJ;=*oz`?ZecYeq23;jZm z_cknG=$-vB--%(xsuw2gp4)QYedhhXx>L12It&^UODCS!b_o-q+`Q|32KI`745T<7WcHwT4H!A!T9r@nSq}lf4w)` zr=m2KRIO8eb1oFmn>ow#*`0Sg=l|aOe9k*t@i`BtOfp;bOJT0z z*9$HOjO8OgT(Nn)pxJ8HM>kPt>A5pGgD%>=Q;B-B?D)D+%XjgsXOYJYQud zR$9is4Dr*vcf77M`s|srr*3I(mTeXgX8B-n)FS!E%k+pn^X1rHOqCV=^tNHwH+^3^@vpN{$Kw)>j*nL*VVg>E9y3_*`BxJX48A$)4y!C zta-0oV0*}Q*_8RV4GYUJntMlGw=-FH_-3kS_uB(M*|ykb1ls=6-kD3h3Q9&``#<=QHw8S-Cg})>W^bf<-J+bZ|d79{sKnEMo_Fqw7#8jk*h(0$94OM z|MfTLwFsHNU&h-xclwHy-6t|#eO#u>UHN6DnkM#MF?&Yj+MCT^K0LWt)tA**^8=m$b#j6M(Eh;?xn~n4FC^67aafq literal 0 HcmV?d00001 diff --git a/source/main.cpp b/source/main.cpp index 73e2fc3..6d68994 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -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)) { diff --git a/source/resource_pack.cpp b/source/resource_pack.cpp index d6b4f30..62f8f5d 100644 --- a/source/resource_pack.cpp +++ b/source/resource_pack.cpp @@ -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; }