1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-27 02:20:36 +00:00

Prune table of getNewLand() candidates.

This commit is contained in:
Jacob Mandelson 2024-05-16 12:41:19 -07:00
parent 7b99248c06
commit cd2152ffad

View File

@ -675,14 +675,22 @@ EX eLand getNewLand(eLand old) {
if(ls::horodisk_structure() && tortoise::seek()) LIKELY tab[cnt++] = laTortoise; if(ls::horodisk_structure() && tortoise::seek()) LIKELY tab[cnt++] = laTortoise;
int attempts = 0; printf("Before pruning: %d entries\n", cnt);
eLand n = old; int idx = 0;
while(incompatible(n, old) || !isLandIngame(n)) { while (idx < cnt) {
n = tab[hrand(cnt)]; eLand n = tab[idx];
if(weirdhyperbolic && specialland == laCrossroads4 && isCrossroads(n)) if (incompatible(n, old) || !isLandIngame(n))
n = laCrossroads4; tab[idx] = tab[--cnt];
attempts++; if(attempts == 2000) break; else
idx++;
} }
printf("After pruning: %d entries\n", cnt);
eLand n = tab[hrand(cnt)];
if (weirdhyperbolic && specialland == laCrossroads4 && isCrossroads(n))
n = laCrossroads4;
//printf("Took %d attempts.\n", attempts);
return n; return n;
} }