(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.
authorpasky
Thu, 17 Mar 2005 23:12:23 +0000
changeset 1517 b77361b13ae4
parent 1516 997a23b8b16c
child 1518 ade7a74ac31a
(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.
misc.c
town_cmd.c
variables.h
--- 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;