(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. ;)
This commit is contained in:
dominik 2005-01-07 18:13:56 +00:00
parent 76c7f3b14e
commit b78b576b21
2 changed files with 16 additions and 2 deletions

View File

@ -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
};

16
ttd.c
View File

@ -1238,6 +1238,17 @@ void UpdateCurrencies()
_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 @@ bool AfterLoadGame(uint version)
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 @@ bool AfterLoadGame(uint version)
return true;
}
void DebugProc(int i)
{
switch(i) {