(svn r2021) Fix: Enlarge _cur_town_ctr from byte to uint32 so that all the towns are considered when growing them even for big maps, where much more than 256 towns are around; reported by Tomasz Dubi?ski <uboottd@hydra.polsl.gliwice.pl>. The savegame still saves just the lowest 8 bits but that doesn't hurt so much.
--- a/misc.c Thu Mar 17 16:31:18 2005 +0000
+++ b/misc.c Thu Mar 17 23:12:23 2005 +0000
@@ -772,6 +772,11 @@
{&_station_tick_ctr, SLE_UINT16, 0, 255},
{&_random_seeds[0][0], SLE_UINT32, 0, 255},
{&_random_seeds[0][1], SLE_UINT32, 0, 255},
+ /* XXX: We save only a portion of the _cur_town_ctr, this should be
+ * fixed in the next revision bump. It does not hurt so much since
+ * it just gives a small single-time penalty to the towns with higher
+ * IDs at the load time. _cur_town_ctr is zeroed in InitializeTowns()
+ * so the higher octets do not interfere at this time. */
{&_cur_town_ctr, SLE_UINT8, 0, 255},
{&_cur_player_tick_index, SLE_FILE_U8 | SLE_VAR_UINT, 0, 255},
{&_next_competitor_start, SLE_FILE_U16 | SLE_VAR_UINT, 0, 255},
--- a/town_cmd.c Thu Mar 17 16:31:18 2005 +0000
+++ b/town_cmd.c Thu Mar 17 23:12:23 2005 +0000
@@ -442,7 +442,7 @@
for (counter += GetTownPoolSize();
counter >= TOWN_GROWTH_FREQUENCY;
counter -= TOWN_GROWTH_FREQUENCY) {
- int i = _cur_town_ctr;
+ uint32 i = _cur_town_ctr;
Town *t;
if (++_cur_town_ctr >= GetTownPoolSize())
--- a/variables.h Thu Mar 17 16:31:18 2005 +0000
+++ b/variables.h Thu Mar 17 23:12:23 2005 +0000
@@ -84,7 +84,7 @@
VARDEF uint32 _player_seeds[MAX_PLAYERS][2];
// Iterator through all towns in OnTick_Town
-VARDEF byte _cur_town_ctr;
+VARDEF uint32 _cur_town_ctr;
VARDEF uint _cur_player_tick_index;
VARDEF uint _next_competitor_start;