diff options
-rw-r--r-- | misc.c | 1 | ||||
-rw-r--r-- | saveload.c | 2 | ||||
-rw-r--r-- | town_cmd.c | 9 | ||||
-rw-r--r-- | variables.h | 2 |
4 files changed, 8 insertions, 6 deletions
@@ -778,6 +778,7 @@ static const SaveLoadGlobVarList _date_desc[] = { {&_next_competitor_start, SLE_FILE_U16 | SLE_VAR_UINT, 0, 255}, {&_trees_tick_ctr, SLE_UINT8, 0, 255}, {&_pause, SLE_UINT8, 4, 255}, + {&_cur_town_iter, SLE_UINT32, 11, 255}, {NULL, 0, 0, 0} }; diff --git a/saveload.c b/saveload.c index 425198c88..bf65e90e0 100644 --- a/saveload.c +++ b/saveload.c @@ -8,7 +8,7 @@ #include "saveload.h" enum { - SAVEGAME_MAJOR_VERSION = 10, + SAVEGAME_MAJOR_VERSION = 11, SAVEGAME_MINOR_VERSION = 0, SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION diff --git a/town_cmd.c b/town_cmd.c index 718011396..e96b3d0ab 100644 --- a/town_cmd.c +++ b/town_cmd.c @@ -432,16 +432,14 @@ static void TownTickHandler(Town *t) void OnTick_Town(void) { - static int counter; - if (_game_mode == GM_EDITOR) return; /* Make sure each town's tickhandler invocation frequency is about the * same - TOWN_GROWTH_FREQUENCY - independent on the number of towns. */ - for (counter += GetTownPoolSize(); - counter >= TOWN_GROWTH_FREQUENCY; - counter -= TOWN_GROWTH_FREQUENCY) { + for (_cur_town_iter += GetTownPoolSize(); + _cur_town_iter >= TOWN_GROWTH_FREQUENCY; + _cur_town_iter -= TOWN_GROWTH_FREQUENCY) { uint32 i = _cur_town_ctr; Town *t; @@ -1914,6 +1912,7 @@ void InitializeTowns(void) s->cargo_type = 0xFF; _cur_town_ctr = 0; + _cur_town_iter = 0; _total_towns = 0; _town_sort_dirty = true; } diff --git a/variables.h b/variables.h index 68fc02c19..dc9ed347f 100644 --- a/variables.h +++ b/variables.h @@ -85,6 +85,8 @@ VARDEF uint32 _player_seeds[MAX_PLAYERS][2]; // Iterator through all towns in OnTick_Town VARDEF uint32 _cur_town_ctr; +// Frequency iterator at the same place +VARDEF uint32 _cur_town_iter; VARDEF uint _cur_player_tick_index; VARDEF uint _next_competitor_start; |