From 4da935a4e2d048bac43924cfa7e53dad24696731 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Fri, 23 Apr 2021 20:10:06 +0200 Subject: [PATCH] fixed switching to 2d field quotient after 3d field quotient, and refactored --- fieldpattern.cpp | 3 +++ geom-exp.cpp | 24 +++++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/fieldpattern.cpp b/fieldpattern.cpp index 7ada96d2..569a971d 100644 --- a/fieldpattern.cpp +++ b/fieldpattern.cpp @@ -1366,10 +1366,13 @@ EX void enableFieldChange() { fieldpattern::quotient_field_changed = true; nextPrimes(gxcur); dynamicval g(geometry, gFieldQuotient); + ginf[geometry].g = ginf[gxcur.base].g; ginf[geometry].sides = ginf[gxcur.base].sides; ginf[geometry].vertex = ginf[gxcur.base].vertex; ginf[geometry].distlimit = ginf[gxcur.base].distlimit; ginf[geometry].tiling_name = ginf[gxcur.base].tiling_name; + ginf[geometry].default_variation = ginf[gxcur.base].default_variation; + ginf[geometry].flags = qFIELD | qANYQ | qBOUNDED; fieldpattern::current_quotient_field.init(gxcur.primes[gxcur.current_prime_id].p); } diff --git a/geom-exp.cpp b/geom-exp.cpp index 48e06f6f..34be2979 100644 --- a/geom-exp.cpp +++ b/geom-exp.cpp @@ -1138,6 +1138,20 @@ EX void field_quotient_3d(int p, unsigned hash) { println(hlog, "set prime = ", currfp.Prime); } +EX void field_quotient_2d(int group, int id, int triplet) { + using namespace fieldpattern; + current_extra = group; + + auto& gxcur = fgeomextras[current_extra]; + while(id >= isize(gxcur.primes)) nextPrime(gxcur); + + fgeomextras[current_extra].current_prime_id = id; + if(triplet != -1) + triplet_id = triplet; + enableFieldChange(); + set_geometry(gFieldQuotient); + } + int read_geom_args() { using namespace arg; if(0) ; @@ -1154,15 +1168,7 @@ int read_geom_args() { stop_game_and_switch_mode(rg::nothing); int a, b; shift(); sscanf(argcs(), "%d,%d", &a, &b); - using namespace fieldpattern; - current_extra = a; - - auto& gxcur = fgeomextras[current_extra]; - while(b >= isize(gxcur.primes)) nextPrime(gxcur); - - fgeomextras[current_extra].current_prime_id = b; - enableFieldChange(); - set_geometry(gFieldQuotient); + field_quotient_2d(a, b, -1); } else if(argis("-triplet")) { stop_game();