From e07f5fed0c766a563794bff43b337ca018ddca74 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Thu, 30 Jan 2020 17:45:51 +0100 Subject: [PATCH] dual:: when one side is Euclidean, only the other one rotates --- hypgraph.cpp | 2 +- multigame.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/hypgraph.cpp b/hypgraph.cpp index 5e512d6d..e2557a85 100644 --- a/hypgraph.cpp +++ b/hypgraph.cpp @@ -1252,7 +1252,7 @@ void hrmap_standard::draw() { EX void spinEdge(ld aspd) { ld downspin = 0; auto& ds = downseek; - if(dual::state == 2 && dual::currently_loaded != dual::main_side) { + if(dual::state == 2 && (dual::one_euclidean ? !euclid : dual::currently_loaded != dual::main_side)) { transmatrix our = dual::get_orientation(); transmatrix their = dual::player_orientation[dual::main_side]; fixmatrix(our); diff --git a/multigame.cpp b/multigame.cpp index 7af6faf4..7c6c0bac 100644 --- a/multigame.cpp +++ b/multigame.cpp @@ -107,6 +107,9 @@ EX } EX namespace dual { /** 0 = dualmode off, 1 = in dualmode (no game chosen), 2 = in dualmode (working on one of subgames) */ EX int state; + + /** exactly one side is Euclidean -- it should not be synchronized with the other side */ + EX bool one_euclidean; EX int currently_loaded; EX int main_side; @@ -332,6 +335,11 @@ EX namespace dual { } EX void assign_landsides() { + switch_to(!currently_loaded); + one_euclidean = euclid; + switch_to(!currently_loaded); + one_euclidean ^= euclid; + landsides.resize(landtypes); int which_hyperbolic = -1; if(ginf[dgd[0].geo].cclass == gcHyperbolic && ginf[dgd[1].geo].cclass != gcHyperbolic)