1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-10-29 13:07:40 +00:00

refactored whirlline loop detection

This commit is contained in:
Zeno Rogue
2021-08-08 19:13:09 +02:00
parent 025893e946
commit a6151f185f
3 changed files with 24 additions and 9 deletions

View File

@@ -102,6 +102,7 @@ EX namespace whirlwind {
again:
cell *at = whirlline[isize(whirlline)-1];
cell *prev = whirlline[isize(whirlline)-2];
if(looped(whirlline)) return;
for(int i=0; i<at->type; i++)
if(at->move(i) && (euclid || at->move(i)->master->alt) && celldistAlt(at->move(i)) == d && at->move(i) != prev) {
whirlline.push_back(at->move(i));
@@ -1062,10 +1063,9 @@ EX namespace whirlpool {
again:
cell *at = whirlline[isize(whirlline)-1];
cell *prev = whirlline[isize(whirlline)-2];
if(looped(whirlline)) return;
for(int i=0; i<at->type; i++)
if(at->move(i) && (eubinary || at->move(i)->master->alt) && celldistAlt(at->move(i)) == d && at->move(i) != prev) {
if(at->move(i) == whirlline[0]) return; // loops in weird geometries?
if(at->move(i) == whirlline[isize(whirlline)/2]) return; // even weirder geometry?
whirlline.push_back(at->move(i));
goto again;
}