1
0
Fork 0

(svn r2033) - Fix: Fix some more desync by saving the town growth frequency iterator _cur_town_iter. Needed to bump a svg revision for that thanks to the braindead SlGlob thing, or at least I don't know how to do it without bumping it.

release/0.4.5
pasky 2005-03-20 00:32:26 +00:00
parent 1990c139d5
commit 087d78d465
4 changed files with 8 additions and 6 deletions

1
misc.c
View File

@ -778,6 +778,7 @@ static const SaveLoadGlobVarList _date_desc[] = {
{&_next_competitor_start, SLE_FILE_U16 | SLE_VAR_UINT, 0, 255}, {&_next_competitor_start, SLE_FILE_U16 | SLE_VAR_UINT, 0, 255},
{&_trees_tick_ctr, SLE_UINT8, 0, 255}, {&_trees_tick_ctr, SLE_UINT8, 0, 255},
{&_pause, SLE_UINT8, 4, 255}, {&_pause, SLE_UINT8, 4, 255},
{&_cur_town_iter, SLE_UINT32, 11, 255},
{NULL, 0, 0, 0} {NULL, 0, 0, 0}
}; };

View File

@ -8,7 +8,7 @@
#include "saveload.h" #include "saveload.h"
enum { enum {
SAVEGAME_MAJOR_VERSION = 10, SAVEGAME_MAJOR_VERSION = 11,
SAVEGAME_MINOR_VERSION = 0, SAVEGAME_MINOR_VERSION = 0,
SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION

View File

@ -432,16 +432,14 @@ static void TownTickHandler(Town *t)
void OnTick_Town(void) void OnTick_Town(void)
{ {
static int counter;
if (_game_mode == GM_EDITOR) if (_game_mode == GM_EDITOR)
return; return;
/* Make sure each town's tickhandler invocation frequency is about the /* Make sure each town's tickhandler invocation frequency is about the
* same - TOWN_GROWTH_FREQUENCY - independent on the number of towns. */ * same - TOWN_GROWTH_FREQUENCY - independent on the number of towns. */
for (counter += GetTownPoolSize(); for (_cur_town_iter += GetTownPoolSize();
counter >= TOWN_GROWTH_FREQUENCY; _cur_town_iter >= TOWN_GROWTH_FREQUENCY;
counter -= TOWN_GROWTH_FREQUENCY) { _cur_town_iter -= TOWN_GROWTH_FREQUENCY) {
uint32 i = _cur_town_ctr; uint32 i = _cur_town_ctr;
Town *t; Town *t;
@ -1914,6 +1912,7 @@ void InitializeTowns(void)
s->cargo_type = 0xFF; s->cargo_type = 0xFF;
_cur_town_ctr = 0; _cur_town_ctr = 0;
_cur_town_iter = 0;
_total_towns = 0; _total_towns = 0;
_town_sort_dirty = true; _town_sort_dirty = true;
} }

View File

@ -85,6 +85,8 @@ VARDEF uint32 _player_seeds[MAX_PLAYERS][2];
// Iterator through all towns in OnTick_Town // Iterator through all towns in OnTick_Town
VARDEF uint32 _cur_town_ctr; VARDEF uint32 _cur_town_ctr;
// Frequency iterator at the same place
VARDEF uint32 _cur_town_iter;
VARDEF uint _cur_player_tick_index; VARDEF uint _cur_player_tick_index;
VARDEF uint _next_competitor_start; VARDEF uint _next_competitor_start;