fairland: Simplify search for next wilderness to elevate
To find the wilderness sector to elevate next, elevate_land() searches the non-mountain, non-capital sectors of the island for one that maximizes a function of its distance to mountains and to sea. The search ignores already elevated sectors in a less than obvious way: 1. it never picks a sector where the function yields -INFINITY or less, and 2. when elevating a wilderness, its (cached) distances get reset to values that make the function return a more negative value. Use a more direct check of "not yet elevated": elevation is still the initial -INFINITY. Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
4f0af0bae0
commit
380d2e9f55
1 changed files with 3 additions and 4 deletions
|
@ -1002,15 +1002,16 @@ elevate_land(void)
|
|||
(100 * (HIGHMIN - LANDMIN)) / (ns - nm - ((c < nc) ? 3 : 1)) :
|
||||
100 * INFINITY;
|
||||
for (k = 100 * (HIGHMIN - 1);; k -= dk) {
|
||||
highest = -INFINITY;
|
||||
highest = 0;
|
||||
where = -1;
|
||||
for (i = 0; i < ns; ++i) {
|
||||
if (ELEV != INFINITY &&
|
||||
if (ELEV == -INFINITY &&
|
||||
(c >= nc || ((!(capx[c] == sectx[c][i] &&
|
||||
capy[c] == secty[c][i])) &&
|
||||
(!(new_x(capx[c] + 2) == sectx[c][i] &&
|
||||
capy[c] == secty[c][i]))))) {
|
||||
h = 3 * (5 - dmoun[i]) + dsea[i];
|
||||
assert(h > 0);
|
||||
if (h > highest) {
|
||||
highest = h;
|
||||
where = i;
|
||||
|
@ -1025,8 +1026,6 @@ elevate_land(void)
|
|||
if (newk < LANDMIN)
|
||||
newk = LANDMIN;
|
||||
elev[sectx[c][where]][secty[c][where]] = newk;
|
||||
dsea[where] = -INFINITY;
|
||||
dmoun[where] = INFINITY;
|
||||
}
|
||||
|
||||
/* Elevate the mountains and capitals */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue