(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. ;)
--- a/saveload.c Fri Jan 07 17:47:29 2005 +0000
+++ b/saveload.c Fri Jan 07 18:13:56 2005 +0000
@@ -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 Fri Jan 07 17:47:29 2005 +0000
+++ b/ttd.c Fri Jan 07 18:13:56 2005 +0000
@@ -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) {