changeset 929:52cd2f236b44 draft

(svn r1417) Fix: The invisible tiles on the southern border are now converted to class MP_VOID when an old map (with wrong classified invisible tiles) is loaded. I bumped the minor savegame version for that, even though it's not really necessary. We're not gonna run out of minor savegame versions anyway though. ;)
author dominik <dominik@openttd.org>
date Fri, 07 Jan 2005 18:13:56 +0000
parents c5651758bdc4
children 2c7548aaea56
files saveload.c ttd.c
diffstat 2 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/saveload.c
+++ b/saveload.c
@@ -8,7 +8,7 @@
 
 enum {
 	SAVEGAME_MAJOR_VERSION = 4,
-	SAVEGAME_MINOR_VERSION = 2,
+	SAVEGAME_MINOR_VERSION = 3,
 
 	SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION
 };
--- a/ttd.c
+++ b/ttd.c
@@ -1238,6 +1238,17 @@
 	_opt.currency = convert_currency[_opt.currency];
 }
 
+// up to revision 1413, the invisible tiles at the southern border have not been MP_VOID
+// even though they should have. This is fixed by this function
+void UpdateVoidTiles()
+{
+	int i;
+	// create void tiles on the border
+	for (i = 0; i != MapMaxY(); i++)
+		_map_type_and_height[ i * MapSizeX() + MapMaxY() ] = MP_VOID << 4;
+	memset(_map_type_and_height + MapMaxY() * MapSizeX(), MP_VOID << 4, MapSizeX());
+}
+
 extern void UpdateOldAircraft();
 
 bool AfterLoadGame(uint version)
@@ -1328,6 +1339,10 @@
 		CheckIsPlayerActive();
 	}
 
+	// the void tiles on the southern border used to belong to a wrong class.
+	if (version <= 0x402)
+		UpdateVoidTiles();
+
 	// If Load Scenario / New (Scenario) Game is used,
 	//  a player does not exist yet. So create one here.
 	// 1 exeption: network-games. Those can have 0 players
@@ -1341,7 +1356,6 @@
 	return true;
 }
 
-
 void DebugProc(int i)
 {
 	switch(i) {