From cfb07810dd59abcc9fd5e5ebb7f62b4e3e10b118 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Wed, 12 Mar 2025 21:22:50 +0100 Subject: [PATCH] rogueviz:;seuphorica:: fixes to thru_portal and mirror --- rogueviz/seuphorica.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/rogueviz/seuphorica.cpp b/rogueviz/seuphorica.cpp index d176021f..dd89f580 100644 --- a/rogueviz/seuphorica.cpp +++ b/rogueviz/seuphorica.cpp @@ -227,10 +227,9 @@ void thru_portal(coord& x, vect2& v) { } } auto x1 = portals.at(x); - v -= tile_orientation[x].spin; - if(tile_orientation[x].mirrored != tile_orientation[x1].mirrored) v.spin = -v.spin; - v += tile_orientation[x1].spin; - v.at = x1; + + auto& tx = tile_orientation[x], tx1 = tile_orientation[x1]; + v = tx1 + (v.spin - tx.spin) * (tx.mirrored?-1:1); x = x1; } @@ -241,7 +240,11 @@ void mirror(coord& at, vect2& prev) { vector reindex = {0,3,6,1,4,7,2,5,8}; for(int i=0; i<9; i++) if(v[i] == at) { at = v[reindex[i]]; prev.at = at; break; } } - prev.spin = 2 * tile_orientation[at].spin + 1 - prev.spin; + auto& tat = tile_orientation[at]; + if(!tat.mirrored) + prev.spin = 2 * tat.spin + 1 - prev.spin; + else + prev.spin = 2 * tat.spin - 1 - prev.spin; prev += 0; }