diff --git a/packages/maps/dev_aqueous.cgz b/packages/maps/dev_aqueous.cgz index ed8d75d5..bb74452b 100644 Binary files a/packages/maps/dev_aqueous.cgz and b/packages/maps/dev_aqueous.cgz differ diff --git a/packages/maps/dev_arabian.cgz b/packages/maps/dev_arabian.cgz index 7ff4ed36..96fb0c96 100644 Binary files a/packages/maps/dev_arabian.cgz and b/packages/maps/dev_arabian.cgz differ diff --git a/packages/maps/dev_arctic.cgz b/packages/maps/dev_arctic.cgz index dd505d4e..c0f2dae0 100644 Binary files a/packages/maps/dev_arctic.cgz and b/packages/maps/dev_arctic.cgz differ diff --git a/packages/maps/dev_arid.cgz b/packages/maps/dev_arid.cgz index cbafc88d..9c28c3d4 100644 Binary files a/packages/maps/dev_arid.cgz and b/packages/maps/dev_arid.cgz differ diff --git a/packages/maps/dev_avenue.cgz b/packages/maps/dev_avenue.cgz index b3dee57a..cc4f9220 100644 Binary files a/packages/maps/dev_avenue.cgz and b/packages/maps/dev_avenue.cgz differ diff --git a/packages/maps/dev_cavern.cgz b/packages/maps/dev_cavern.cgz index cf7409fe..e8183633 100644 Binary files a/packages/maps/dev_cavern.cgz and b/packages/maps/dev_cavern.cgz differ diff --git a/packages/maps/dev_complex.cgz b/packages/maps/dev_complex.cgz index c4428d29..0e2b11ab 100644 Binary files a/packages/maps/dev_complex.cgz and b/packages/maps/dev_complex.cgz differ diff --git a/packages/maps/dev_depot.cgz b/packages/maps/dev_depot.cgz index f15ba3a9..91b96660 100644 Binary files a/packages/maps/dev_depot.cgz and b/packages/maps/dev_depot.cgz differ diff --git a/packages/maps/dev_desert.cgz b/packages/maps/dev_desert.cgz index 65382d22..0ccc6c92 100644 Binary files a/packages/maps/dev_desert.cgz and b/packages/maps/dev_desert.cgz differ diff --git a/packages/maps/dev_desert2.cgz b/packages/maps/dev_desert2.cgz index 537ea0d3..f01e1e92 100644 Binary files a/packages/maps/dev_desert2.cgz and b/packages/maps/dev_desert2.cgz differ diff --git a/packages/maps/dev_desert3.cgz b/packages/maps/dev_desert3.cgz index e8f4e78d..37af039b 100644 Binary files a/packages/maps/dev_desert3.cgz and b/packages/maps/dev_desert3.cgz differ diff --git a/packages/maps/dev_douze.cgz b/packages/maps/dev_douze.cgz index 00892ff6..b70fed96 100644 Binary files a/packages/maps/dev_douze.cgz and b/packages/maps/dev_douze.cgz differ diff --git a/packages/maps/dev_edifice.cgz b/packages/maps/dev_edifice.cgz index 39801b30..7ad3991f 100644 Binary files a/packages/maps/dev_edifice.cgz and b/packages/maps/dev_edifice.cgz differ diff --git a/packages/maps/dev_elevation.cgz b/packages/maps/dev_elevation.cgz index 2e46bb9b..eaca103f 100644 Binary files a/packages/maps/dev_elevation.cgz and b/packages/maps/dev_elevation.cgz differ diff --git a/packages/maps/dev_gothic.cgz b/packages/maps/dev_gothic.cgz index 6d5b9620..800ceb0c 100644 Binary files a/packages/maps/dev_gothic.cgz and b/packages/maps/dev_gothic.cgz differ diff --git a/packages/maps/dev_iceroad.cgz b/packages/maps/dev_iceroad.cgz index ed642fa5..ef8bf8bd 100644 Binary files a/packages/maps/dev_iceroad.cgz and b/packages/maps/dev_iceroad.cgz differ diff --git a/packages/maps/dev_industrial.cgz b/packages/maps/dev_industrial.cgz index 18b13904..97d0d45c 100644 Binary files a/packages/maps/dev_industrial.cgz and b/packages/maps/dev_industrial.cgz differ diff --git a/packages/maps/dev_ingress.cgz b/packages/maps/dev_ingress.cgz index 5eb2e533..aeafbb51 100644 Binary files a/packages/maps/dev_ingress.cgz and b/packages/maps/dev_ingress.cgz differ diff --git a/packages/maps/dev_keller.cgz b/packages/maps/dev_keller.cgz index 7bfa6f8e..cb87cc3a 100644 Binary files a/packages/maps/dev_keller.cgz and b/packages/maps/dev_keller.cgz differ diff --git a/packages/maps/dev_lainio.cgz b/packages/maps/dev_lainio.cgz index b896552a..a5fbe570 100644 Binary files a/packages/maps/dev_lainio.cgz and b/packages/maps/dev_lainio.cgz differ diff --git a/packages/maps/dev_mines.cgz b/packages/maps/dev_mines.cgz index b6630074..067a534a 100644 Binary files a/packages/maps/dev_mines.cgz and b/packages/maps/dev_mines.cgz differ diff --git a/packages/maps/dev_outpost.cgz b/packages/maps/dev_outpost.cgz index ce845157..d34a5a30 100644 Binary files a/packages/maps/dev_outpost.cgz and b/packages/maps/dev_outpost.cgz differ diff --git a/packages/maps/dev_power.cgz b/packages/maps/dev_power.cgz index 94c2a1d0..a0e3d0a2 100644 Binary files a/packages/maps/dev_power.cgz and b/packages/maps/dev_power.cgz differ diff --git a/packages/maps/dev_rattrap.cgz b/packages/maps/dev_rattrap.cgz index 502ad28b..1e03d76f 100644 Binary files a/packages/maps/dev_rattrap.cgz and b/packages/maps/dev_rattrap.cgz differ diff --git a/packages/maps/dev_scaffold.cgz b/packages/maps/dev_scaffold.cgz index 5333937e..b4519baf 100644 Binary files a/packages/maps/dev_scaffold.cgz and b/packages/maps/dev_scaffold.cgz differ diff --git a/packages/maps/dev_shine.cgz b/packages/maps/dev_shine.cgz index b3924c71..110498fe 100644 Binary files a/packages/maps/dev_shine.cgz and b/packages/maps/dev_shine.cgz differ diff --git a/packages/maps/dev_snow.cgz b/packages/maps/dev_snow.cgz index 2d5309fd..9eaef117 100644 Binary files a/packages/maps/dev_snow.cgz and b/packages/maps/dev_snow.cgz differ diff --git a/packages/maps/dev_stellar.cgz b/packages/maps/dev_stellar.cgz index 27e94321..7443b20b 100644 Binary files a/packages/maps/dev_stellar.cgz and b/packages/maps/dev_stellar.cgz differ diff --git a/packages/maps/dev_sunset.cgz b/packages/maps/dev_sunset.cgz index ea49c00e..6886fcd6 100644 Binary files a/packages/maps/dev_sunset.cgz and b/packages/maps/dev_sunset.cgz differ diff --git a/packages/maps/dev_swamp.cgz b/packages/maps/dev_swamp.cgz index 91670bdc..38adc997 100644 Binary files a/packages/maps/dev_swamp.cgz and b/packages/maps/dev_swamp.cgz differ diff --git a/packages/maps/dev_terros.cgz b/packages/maps/dev_terros.cgz index 11588c97..86819cb7 100644 Binary files a/packages/maps/dev_terros.cgz and b/packages/maps/dev_terros.cgz differ diff --git a/packages/maps/dev_toxic.cgz b/packages/maps/dev_toxic.cgz index 25ae2de5..98d545bc 100644 Binary files a/packages/maps/dev_toxic.cgz and b/packages/maps/dev_toxic.cgz differ diff --git a/packages/maps/dev_urban.cgz b/packages/maps/dev_urban.cgz index 195c5b7b..bc561133 100644 Binary files a/packages/maps/dev_urban.cgz and b/packages/maps/dev_urban.cgz differ diff --git a/packages/maps/dev_venison.cgz b/packages/maps/dev_venison.cgz index 371caf90..d692e171 100644 Binary files a/packages/maps/dev_venison.cgz and b/packages/maps/dev_venison.cgz differ diff --git a/packages/maps/dev_wasteland.cgz b/packages/maps/dev_wasteland.cgz index 0228748d..f3375da4 100644 Binary files a/packages/maps/dev_wasteland.cgz and b/packages/maps/dev_wasteland.cgz differ diff --git a/packages/maps/dev_werk.cgz b/packages/maps/dev_werk.cgz index 84b0132f..157547e6 100644 Binary files a/packages/maps/dev_werk.cgz and b/packages/maps/dev_werk.cgz differ diff --git a/source/src/world.cpp b/source/src/world.cpp index c625a108..720f2f77 100644 --- a/source/src/world.cpp +++ b/source/src/world.cpp @@ -897,11 +897,6 @@ void mapmrproper(bool manual) if(rs & INVISUTEX) s->utex = r->utex; } if(r->defer) continue; - if(r->visible & INVISIBLE) - { - domip0(rs &= INVISIBLE;); - continue; // do not touch hidden solid blocks... for some reason it messes up filesize - } int utex = -1, wtex = -1, udiff = 0, wdiff = 0; domip0( if(!(rs & INVISWTEX) && s->wtex != wtex) @@ -915,13 +910,37 @@ void mapmrproper(bool manual) udiff++; } ); - if(!wdiff) wtex = r->wtex; - if(!udiff) utex = r->utex; - if(wdiff < 2) domip0(if(rs & INVISWTEX) s->wtex = wtex; rs &= ~(INVISWTEX|INVISIBLE); ); - if(udiff < 2) domip0(if(rs & INVISUTEX) s->utex = utex; rs &= ~INVISUTEX; ); + if(wdiff == 1) domip0(if(rs & INVISWTEX) s->wtex = wtex; rs &= ~(INVISWTEX|INVISIBLE); ); + if(udiff == 1) domip0(if(rs & INVISUTEX) s->utex = utex; rs &= ~INVISUTEX; ); } } + // use the remaining invisibilities to help the run-length-encoder + r = NULL, s = world; + #define c(f) (s->f==r->f) + loopi(cubicsize) + { + if(SOLID(s)) + { + if(r && c(type) && c(vdelta) && ((s->visible & INVISWTEX) || c(wtex))) + { + s->wtex = r->wtex; + } + else r = s; + } + else + { + if(r && c(type) && c(floor) && c(ceil) && c(ctex) && c(ftex) && c(vdelta) && c(tag) && ((s->visible & INVISWTEX) || c(wtex)) && ((s->visible & INVISUTEX) || c(utex))) + { + s->wtex = r->wtex; + s->utex = r->utex; + } + else r = s; + } + s++; + } + #undef c + clearworldvisibility(); // cleanup // recalc everything with the optimized data