diff --git a/goldberg.cpp b/goldberg.cpp index b28cd55d..544a3678 100644 --- a/goldberg.cpp +++ b/goldberg.cpp @@ -579,14 +579,17 @@ namespace hr { namespace gp { dialog::init(XLAT("Goldberg")); bool show_nonthree = !(texture_remap && (S7&1)); + bool show_bitrunc = !(texture_remap && !(S7&1)); if(show_nonthree) { dialog::addBoolItem(XLAT("OFF"), param == loc(1,0), 'a'); dialog::lastItem().value = "GP(1,0)"; } - dialog::addBoolItem(XLAT("bitruncated"), param == loc(1,1), 'b'); - dialog::lastItem().value = "GP(1,1)"; + if(show_bitrunc) { + dialog::addBoolItem(XLAT("bitruncated"), param == loc(1,1), 'b'); + dialog::lastItem().value = "GP(1,1)"; + } if(show_nonthree) { dialog::addBoolItem(XLAT("chamfered"), param == loc(2,0), 'c'); @@ -599,10 +602,12 @@ namespace hr { namespace gp { dialog::addBreak(100); dialog::addSelItem("x", its(config.first), 'x'); dialog::addSelItem("y", its(config.second), 'y'); - + if((config.first-config.second)%3 && !show_nonthree) - dialog::addInfo("This pattern needs x-y divisible by 3"); - else + dialog::addInfo(XLAT("This pattern needs x-y divisible by 3")); + else if(config == loc(1,1) && !show_bitrunc) + dialog::addInfo(XLAT("Select bitruncated from the previous menu")); + else dialog::addBoolItem(XLAT("select"), param == internal_representation(config), 'f'); dialog::addBreak(100); @@ -610,17 +615,17 @@ namespace hr { namespace gp { dialog::addBack(); dialog::display(); - keyhandler = [show_nonthree, texture_remap] (int sym, int uni) { + keyhandler = [show_nonthree, show_bitrunc, texture_remap] (int sym, int uni) { dialog::handleNavigation(sym, uni); if(uni == 'a' && show_nonthree) whirl_set(loc(1, 0), texture_remap); - else if(uni == 'b') + else if(uni == 'b' && show_bitrunc) whirl_set(loc(1, 1), texture_remap); else if(uni == 'c' && show_nonthree) whirl_set(loc(2, 0), texture_remap); else if(uni == 'd') whirl_set(loc(3, 0), texture_remap); - else if(uni == 'f' && (show_nonthree || (config.first-config.second)%3 == 0)) + else if(uni == 'f' && (config == loc(1,1) ? show_bitrunc : (show_nonthree || (config.first-config.second)%3 == 0))) whirl_set(config, texture_remap); else if(uni == 'x') dialog::editNumber(config.first, 1, 10, 1, 1, "x", helptext()); diff --git a/pattern2.cpp b/pattern2.cpp index 222818cc..38f46e56 100644 --- a/pattern2.cpp +++ b/pattern2.cpp @@ -767,7 +767,7 @@ namespace patterns { if((gp::on? (S3==3) : !weirdhyperbolic) && isWarped(c)) val_warped(c, si); else { - si.id = ishept(c) ? 1 : 0; + si.id = pseudohept(c) ? 1 : 0; if(euclid) { si.dir = ishex1(c) ? 0 : 3; if(ctof(c)) si.symmetries = 3; @@ -956,6 +956,12 @@ namespace patterns { else if(a457 && pat == PAT_ZEBRA) { val_all(c, si, sub, pat); } + + else if(gp::on) { + bool football = (pat == PAT_COLORING && (sub & SPF_FOOTBALL)) || pat == 0; + if(football) val_nopattern(c, si, sub); + else val_threecolors(c, si, sub); + } else if(pat == PAT_COLORING && (S7 == 4 || euclid || (a38 && gp_threecolor() == 1))) { val_threecolors(c, si, sub); @@ -1626,6 +1632,7 @@ namespace patterns { dialog::addBoolItem(s, geometry == g.geo && nonbitrunc == g.nonbitru && whichPattern == g.whichPattern && subpattern_flags == g.subpattern_flags, 'a'+j); } bool have_goldberg = S3 == 3 && among(cgroup, cpFootball, cpThree) && !euclid; + if(!(S7&1) && !nonbitrunc) have_goldberg = false; // always start from non-bitruncated if(have_goldberg) { dialog::addBoolItem(XLAT("Goldberg"), gp::on, 'G'); dialog::lastItem().value = gp::operation_name();