1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-11-23 13:07:16 +00:00

fix Z-periods for Nil

This commit is contained in:
Zeno Rogue 2024-06-21 00:36:39 +02:00
parent 5eefd06765
commit 920f4f500b

View File

@ -1129,8 +1129,9 @@ EX void show_niltorus3() {
}
dialog::addSelItem(XLAT("honeycomb"), XLAT(nil_structures[S7_edit]->name), 'h');
dialog::add_action([] { S7_edit = (S7_edit+1)%isize(nil_structures); });
bool ok = (!nilperiod_edit[1]) || (nilperiod_edit[2] && nilperiod_edit[1] % nilperiod_edit[2] == 0);
int hx = nil_structures[S7_edit]->mvec_hex ? 2 : 1;
bool ok = !zgmod(nilperiod_edit[0]*hx, nilperiod_edit[2]) && !zgmod(nilperiod_edit[1]*hx, nilperiod_edit[2]);
dialog::addBreak(50);
@ -1145,7 +1146,7 @@ EX void show_niltorus3() {
start_game();
});
}
else dialog::addInfo(XLAT("Y period must be divisible by Z period"));
else dialog::addInfo(XLAT("Y period and X period must be divisible by Z period"));
dialog::addBreak(50);
dialog::addBack();
@ -1260,6 +1261,13 @@ EX namespace hybrid {
check_cgi(); cgi.require_basics();
if(!hybrid::csteps || gmod(cgi.psl_steps, hybrid::csteps)) {
hybrid::csteps = cgi.psl_steps;
if(nil) {
auto& T = euc::eu_input.user_axes;
hybrid::csteps = gcd(gcd(T[0][0], T[1][1]), gcd(T[0][1], T[1][0]));
if(S3 == 3) hybrid::csteps *= 2;
if(BITRUNCATED) hybrid::csteps *= S3;
if(INVERSE) hybrid::csteps *= 2;
}
hybrid::reconfigure();
}
}
@ -3139,7 +3147,9 @@ EX namespace nisot {
}
else if(argis("-twisted-product")) {
PHASEFROM(2);
bool quo = sphere || quotient;
set_geometry(gTwistedProduct);
if(quo) hybrid::fixup_csteps();
return 0;
}
else if(argis("-rotspace")) {