diff options
Diffstat (limited to 'openttd.c')
-rw-r--r-- | openttd.c | 51 |
1 files changed, 30 insertions, 21 deletions
@@ -1130,22 +1130,22 @@ bool AfterLoadGame(uint version) Player *p; // in version 2.1 of the savegame, town owner was unified. - if (version <= 0x200) ConvertTownOwner(); + if (CheckSavegameVersionOldStyle(2, 1)) ConvertTownOwner(); // from version 4.1 of the savegame, exclusive rights are stored at towns - if (version <= 0x400) UpdateExclusiveRights(); + if (CheckSavegameVersionOldStyle(4, 1)) UpdateExclusiveRights(); // from version 4.2 of the savegame, currencies are in a different order - if (version <= 0x401) UpdateCurrencies(); + if (CheckSavegameVersionOldStyle(4, 2)) UpdateCurrencies(); - // from version 6.0 of the savegame, signs have an "owner" - if (version <= 0x600) UpdateSignOwner(); + // from version 6.1 of the savegame, signs have an "owner" + if (CheckSavegameVersionOldStyle(6, 1)) UpdateSignOwner(); /* In old version there seems to be a problem that water is owned by OWNER_NONE, not OWNER_WATER.. I can't replicate it for the current - (0x402) version, so I just check when versions are older, and then + (4.3) version, so I just check when versions are older, and then walk through the whole map.. */ - if (version <= 0x402) { + if (CheckSavegameVersionOldStyle(4, 3)) { TileIndex tile = TileXY(0, 0); uint w = MapSizeX(); uint h = MapSizeY(); @@ -1172,12 +1172,12 @@ bool AfterLoadGame(uint version) AfterLoadVehicles(); // Update all waypoints - if (version < 0x0C00) FixOldWaypoints(); + if (CheckSavegameVersion(12)) FixOldWaypoints(); UpdateAllWaypointSigns(); // in version 2.2 of the savegame, we have new airports - if (version <= 0x201) UpdateOldAircraft(); + if (CheckSavegameVersionOldStyle(2, 2)) UpdateOldAircraft(); UpdateAllStationVirtCoord(); @@ -1205,12 +1205,12 @@ bool AfterLoadGame(uint version) vp->virtual_width = vp->width << vp->zoom; vp->virtual_height = vp->height << vp->zoom; - // in version 4.0 of the savegame, is_active was introduced to determine + // in version 4.1 of the savegame, is_active was introduced to determine // if a player does exist, rather then checking name_1 - if (version <= 0x400) CheckIsPlayerActive(); + if (CheckSavegameVersionOldStyle(4, 1)) CheckIsPlayerActive(); - // the void tiles on the southern border used to belong to a wrong class. - if (version <= 0x402) UpdateVoidTiles(); + // the void tiles on the southern border used to belong to a wrong class (pre 4.3). + if (CheckSavegameVersionOldStyle(4, 3)) UpdateVoidTiles(); // If Load Scenario / New (Scenario) Game is used, // a player does not exist yet. So create one here. @@ -1222,10 +1222,13 @@ bool AfterLoadGame(uint version) DoZoomInOutWindow(ZOOM_NONE, w); // update button status MarkWholeScreenDirty(); - //In 5.1, Oilrigs have been moved (again) - if (version <= 0x500) UpdateOilRig(); + // In 5.1, Oilrigs have been moved (again) + if (CheckSavegameVersionOldStyle(5, 1)) UpdateOilRig(); - if (version <= 0x600) { + /* In version 6.1 we put the town index in the map-array. To do this, we need + * to use m2 (16bit big), so we need to clean m2, and that is where this is + * all about ;) */ + if (CheckSavegameVersionOldStyle(6, 1)) { BEGIN_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0) { if (IsTileType(tile, MP_HOUSE)) { _m[tile].m4 = _m[tile].m2; @@ -1247,12 +1250,16 @@ bool AfterLoadGame(uint version) } END_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0); } - if (version < 0x900) { + /* From version 9.0, we update the max passengers of a town (was sometimes negative + * before that. */ + if (CheckSavegameVersion(9)) { Town *t; FOR_ALL_TOWNS(t) UpdateTownMaxPass(t); } - if (version < 0xF00) { + /* From version 15.0, we moved a semaphore bit from bit 2 to bit 3 in m4, making + * room for PBS. While doing that, clean some blocks that should be empty, for PBS. */ + if (CheckSavegameVersion(15)) { BEGIN_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0) { if (IsTileType(tile, MP_RAILWAY) && HasSignals(tile) && HASBIT(_m[tile].m4, 2)) { CLRBIT(_m[tile].m4, 2); @@ -1264,7 +1271,9 @@ bool AfterLoadGame(uint version) } END_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0); } - if (version < 0x1000) { + /* From version 16.0, we included autorenew on engines, which are now saved, but + * of course, we do need to initialize them for older savegames. */ + if (CheckSavegameVersion(16)) { FOR_ALL_PLAYERS(p) { EngineID i; @@ -1288,7 +1297,7 @@ bool AfterLoadGame(uint version) /* In version 16.1 of the savegame, trains became aware of station lengths need to initialized to the invalid state players needs to set renew_keep_length too */ - if (version < 0x1001) { + if (CheckSavegameVersionOldStyle(16, 1)) { Vehicle *v; FOR_ALL_PLAYERS(p) { p->renew_keep_length = false; @@ -1306,7 +1315,7 @@ bool AfterLoadGame(uint version) * waypoints to make way for storing the index in m2. The custom graphics * id which was stored in m4 is now saved as a grf/id reference in the * waypoint struct. */ - if (version < 0x1100) { + if (CheckSavegameVersion(17)) { Waypoint *wp; FOR_ALL_WAYPOINTS(wp) { |