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 * (HIGHMIN - LANDMIN)) / (ns - nm - ((c < nc) ? 3 : 1)) :
|
||||||
100 * INFINITY;
|
100 * INFINITY;
|
||||||
for (k = 100 * (HIGHMIN - 1);; k -= dk) {
|
for (k = 100 * (HIGHMIN - 1);; k -= dk) {
|
||||||
highest = -INFINITY;
|
highest = 0;
|
||||||
where = -1;
|
where = -1;
|
||||||
for (i = 0; i < ns; ++i) {
|
for (i = 0; i < ns; ++i) {
|
||||||
if (ELEV != INFINITY &&
|
if (ELEV == -INFINITY &&
|
||||||
(c >= nc || ((!(capx[c] == sectx[c][i] &&
|
(c >= nc || ((!(capx[c] == sectx[c][i] &&
|
||||||
capy[c] == secty[c][i])) &&
|
capy[c] == secty[c][i])) &&
|
||||||
(!(new_x(capx[c] + 2) == sectx[c][i] &&
|
(!(new_x(capx[c] + 2) == sectx[c][i] &&
|
||||||
capy[c] == secty[c][i]))))) {
|
capy[c] == secty[c][i]))))) {
|
||||||
h = 3 * (5 - dmoun[i]) + dsea[i];
|
h = 3 * (5 - dmoun[i]) + dsea[i];
|
||||||
|
assert(h > 0);
|
||||||
if (h > highest) {
|
if (h > highest) {
|
||||||
highest = h;
|
highest = h;
|
||||||
where = i;
|
where = i;
|
||||||
|
@ -1025,8 +1026,6 @@ elevate_land(void)
|
||||||
if (newk < LANDMIN)
|
if (newk < LANDMIN)
|
||||||
newk = LANDMIN;
|
newk = LANDMIN;
|
||||||
elev[sectx[c][where]][secty[c][where]] = newk;
|
elev[sectx[c][where]][secty[c][where]] = newk;
|
||||||
dsea[where] = -INFINITY;
|
|
||||||
dmoun[where] = INFINITY;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Elevate the mountains and capitals */
|
/* Elevate the mountains and capitals */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue