diff options
author | pasky <pasky@openttd.org> | 2005-03-17 23:12:23 +0000 |
---|---|---|
committer | pasky <pasky@openttd.org> | 2005-03-17 23:12:23 +0000 |
commit | ad579912f4be16f7333553d43e3712ea541c2350 (patch) | |
tree | aaf4ba873d4614c178d027e80231afa6dc1f5320 | |
parent | cb084f59c2fbd58d38b15cee53d563816fcbf1c7 (diff) | |
download | openttd-ad579912f4be16f7333553d43e3712ea541c2350.tar.xz |
(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.
-rw-r--r-- | misc.c | 5 | ||||
-rw-r--r-- | town_cmd.c | 2 | ||||
-rw-r--r-- | variables.h | 2 |
3 files changed, 7 insertions, 2 deletions
@@ -772,6 +772,11 @@ static const SaveLoadGlobVarList _date_desc[] = { {&_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 index 7846d3fc0..718011396 100644 --- 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 index 575f7920e..68fc02c19 100644 --- 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; |