# HG changeset patch # User pasky # Date 2005-03-17 23:12:23 # Node ID 9f1e3f93cf58fb4b3a1dca295025599689082f64 # Parent acf7eed0d4af89d1414a70bd12a86ec572d35d61 (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 . The savegame still saves just the lowest 8 bits but that doesn't hurt so much. diff --git a/misc.c b/misc.c --- a/misc.c +++ b/misc.c @@ -772,6 +772,11 @@ static const SaveLoadGlobVarList _date_d {&_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}, diff --git a/town_cmd.c b/town_cmd.c --- a/town_cmd.c +++ b/town_cmd.c @@ -442,7 +442,7 @@ void OnTick_Town(void) 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()) diff --git a/variables.h b/variables.h --- a/variables.h +++ b/variables.h @@ -84,7 +84,7 @@ VARDEF uint32 _random_seeds[2][2]; 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;