fixed a bug in loading maps from old versions

This commit is contained in:
Zeno Rogue 2020-03-22 09:48:24 +01:00
parent aa8906d6dd
commit b2a6ae304d
1 changed files with 15 additions and 15 deletions

View File

@ -150,22 +150,22 @@ namespace mapstream {
#if CAP_ARCM #if CAP_ARCM
if(geometry == gArchimedean) f.write(arcm::current.symbol); if(geometry == gArchimedean) f.write(arcm::current.symbol);
#endif #endif
if(geometry == gNil && VERNUM_HEX >= 0xA80C) { if(geometry == gNil) {
f.write(S7); f.write(S7);
f.write(nilv::nilperiod); f.write(nilv::nilperiod);
} }
if(geometry == gArnoldCat && VERNUM_HEX >= 0xA80C) { if(geometry == gArnoldCat) {
f.write(asonov::period_xy); f.write(asonov::period_xy);
f.write(asonov::period_z); f.write(asonov::period_z);
} }
if(geometry == gProduct && VERNUM_HEX >= 0xA80C) { if(geometry == gProduct) {
f.write(product::csteps); f.write(product::csteps);
f.write(product::cspin); f.write(product::cspin);
} }
if(hybri && VERNUM_HEX >= 0xA80C) { if(hybri) {
hybrid::in_underlying_geometry([&] { save_geometry(f); }); hybrid::in_underlying_geometry([&] { save_geometry(f); });
} }
if(bt::in() && VERNUM_HEX >= 0xA80C) if(bt::in())
f.write(vid.binary_width); f.write(vid.binary_width);
if(euc::in()) { if(euc::in()) {
f.write(euc::eu_input.user_axes); f.write(euc::eu_input.user_axes);
@ -212,7 +212,7 @@ namespace mapstream {
auto& ge = fgeomextras[current_extra]; auto& ge = fgeomextras[current_extra];
auto& id = ge.current_prime_id; auto& id = ge.current_prime_id;
f.read(id); f.read(id);
if(VERNUM_HEX < 0xA80C) switch(ge.base) { if(f.vernum < 0xA80C) switch(ge.base) {
case gNormal: id++; break; case gNormal: id++; break;
case g45: id++; break; case g45: id++; break;
case g46: id+=2; break; case g46: id+=2; break;
@ -233,32 +233,32 @@ namespace mapstream {
} }
} }
#endif #endif
if(geometry == gNil && VERNUM_HEX >= 0xA80C) { if(geometry == gNil && f.vernum >= 0xA80C) {
f.read(S7); f.read(S7);
f.read(nilv::nilperiod); f.read(nilv::nilperiod);
nilv::set_flags(); nilv::set_flags();
} }
if(geometry == gArnoldCat && VERNUM_HEX >= 0xA80C) { if(geometry == gArnoldCat && f.vernum >= 0xA80C) {
f.read(asonov::period_xy); f.read(asonov::period_xy);
f.read(asonov::period_z); f.read(asonov::period_z);
asonov::set_flags(); asonov::set_flags();
} }
if(geometry == gProduct && VERNUM_HEX >= 0xA80C) { if(geometry == gProduct && f.vernum >= 0xA80C) {
f.read(product::csteps); f.read(product::csteps);
if(VERNUM_HEX >= 0xA80D) f.read(product::cspin); if(f.vernum >= 0xA80D) f.read(product::cspin);
} }
if(hybri && VERNUM_HEX >= 0xA80C) { if(hybri && f.vernum >= 0xA80C) {
auto g = geometry; auto g = geometry;
load_geometry(f); load_geometry(f);
set_geometry(g); set_geometry(g);
} }
if(bt::in() && VERNUM_HEX >= 0xA80C) if(bt::in() && f.vernum >= 0xA80C)
f.read(vid.binary_width); f.read(vid.binary_width);
if(euc::in() && VERNUM_HEX >= 0xA80D) { if(euc::in() && f.vernum >= 0xA80D) {
f.read(euc::eu_input.user_axes); f.read(euc::eu_input.user_axes);
f.read(euc::eu_input.twisted); f.read(euc::eu_input.twisted);
} }
if(VERNUM_HEX >= 0xA810) if(f.vernum >= 0xA810)
f.read(mine_adjacency_rule); f.read(mine_adjacency_rule);
} }
@ -405,7 +405,7 @@ namespace mapstream {
f.read(patterns::subpattern_flags); f.read(patterns::subpattern_flags);
f.read(patterns::whichCanvas); f.read(patterns::whichCanvas);
f.read(patterns::displaycodes); f.read(patterns::displaycodes);
if(VERNUM_HEX >= 0xA816) if(f.vernum >= 0xA816)
f.read(canvas_default_wall); f.read(canvas_default_wall);
f.read(mapeditor::drawplayer); f.read(mapeditor::drawplayer);
if(patterns::whichCanvas == 'f') f.read(patterns::color_formula); if(patterns::whichCanvas == 'f') f.read(patterns::color_formula);