From 976fe48d945662535205172b6eaa7530a1a56a2f Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Mon, 24 Feb 2025 08:56:32 +0100 Subject: [PATCH] rogueviz::fundamental:: special for Zebra --- rogueviz/fundamental.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/rogueviz/fundamental.cpp b/rogueviz/fundamental.cpp index 8adf91df..50fe3407 100644 --- a/rogueviz/fundamental.cpp +++ b/rogueviz/fundamental.cpp @@ -122,20 +122,37 @@ void fundamental_marker() { int tree_edges = 0; int face_edges = 0; - + + bool first_zebra_phase = geometry == gZebraQuotient && funmode == 3 && PURE; + bool second_zebra_phase = false; + + again: + for(int k=0; ktype; i++) { cellwalker cw(c, i); cell *c2 = cw.cpeek(); if(gm.count(c2)) continue; + if(first_zebra_phase && (zebra40(c) % 4) != (zebra40(c2) % 4)) + continue; + if(second_zebra_phase) { + int j = 0; + for(; jtype; j++) if(zebra40(c->move(j)) == 4 + zebra40(c) % 12) break; + int v = gmod(i-j+2, 7); if(v < 5) continue; + } gm[c2] = gm[c] * rel(cw); - // queueline(gm[c2] * C0, gm[c2] * xspinpush0(ticks, 0.2), 0xFFFFFFFF, 3); be_connected(cw); tree_edges++; cells.push_back(c2); } } + + if(first_zebra_phase) { + first_zebra_phase = false; + second_zebra_phase = true; + goto again; + } while(fill_faces) { int f = face_edges;