dual:: when one side is Euclidean, only the other one rotates

This commit is contained in:
Zeno Rogue 2020-01-30 17:45:51 +01:00
parent 8005b39f6f
commit e07f5fed0c
2 changed files with 9 additions and 1 deletions

View File

@ -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);

View File

@ -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)