1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-10-16 06:37:38 +00:00

tracking the specific copy of the player in confusing geometries

This commit is contained in:
Zeno Rogue
2019-11-23 19:05:24 +01:00
parent edcf160a28
commit 982f01e6e5
7 changed files with 44 additions and 6 deletions

View File

@@ -172,10 +172,13 @@ void monster::rebasePat(const transmatrix& new_pat, cell *c2) {
virtualRebase(this);
fix_to_2(at);
pat = at;
if(multi::players == 1 && this == shmup::pc[0])
current_display->which_copy = ggmatrix(base);
return;
}
if(quotient) {
at = inverse(gmatrix[base]) * new_pat;
transmatrix old_at = at;
virtualRebase(this);
fix_to_2(at);
if(base != c2) {
@@ -183,8 +186,12 @@ void monster::rebasePat(const transmatrix& new_pat, cell *c2) {
base = c2;
at = inverse(T) * at;
}
if(multi::players == 1 && this == shmup::pc[0] && !eqmatrix(old_at, at))
current_display->which_copy = current_display->which_copy * old_at * inverse(at);
return;
}
if(multi::players == 1 && this == shmup::pc[0])
current_display->which_copy = current_display->which_copy * inverse(gmatrix[base]) * gmatrix[c2];
pat = new_pat;
// if(c2 != base) printf("rebase %p -> %p\n", base, c2);
base = c2;