1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-10-14 05:57:37 +00:00

mapeditor:: 3D field quotients are now saved correctly

This commit is contained in:
Zeno Rogue
2021-09-17 11:56:18 +02:00
parent 716f7684e0
commit 7a7198c45a
2 changed files with 52 additions and 22 deletions

View File

@@ -454,8 +454,15 @@ EX namespace mapstream {
using namespace fieldpattern;
f.write(quotient_field_changed);
if(quotient_field_changed) {
f.write(current_extra);
f.write(fgeomextras[current_extra].current_prime_id);
decltype(current_extra) cex = WDIM == 3 ? -1 : current_extra;
f.write(cex);
if(cex == -1) {
f.write(fieldpattern::underlying_geometry);
hwrite_fpattern(f, currfp);
}
else {
f.write(fgeomextras[current_extra].current_prime_id);
}
}
}
#endif
@@ -549,18 +556,30 @@ EX namespace mapstream {
using namespace fieldpattern;
f.read(quotient_field_changed);
if(quotient_field_changed) {
auto cex = current_extra;
f.read(current_extra);
auto& ge = fgeomextras[current_extra];
auto& id = ge.current_prime_id;
f.read(id);
if(vernum < 0xA80C) switch(ge.base) {
case gNormal: id++; break;
case g45: id++; break;
case g46: id+=2; break;
case g47: id++; break;
default: ;
if(current_extra == -1) {
current_extra = cex;
f.read(geometry);
check_cgi();
cgi.require_basics();
fieldpattern::field_from_current();
set_geometry(gFieldQuotient);
hread_fpattern(f, currfp);
}
else {
auto& ge = fgeomextras[current_extra];
auto& id = ge.current_prime_id;
f.read(id);
if(vernum < 0xA80C) switch(ge.base) {
case gNormal: id++; break;
case g45: id++; break;
case g46: id+=2; break;
case g47: id++; break;
default: ;
}
enableFieldChange();
}
enableFieldChange();
}
}
#endif