summaryrefslogtreecommitdiff
path: root/src/saveload/afterload.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/saveload/afterload.cpp')
-rw-r--r--src/saveload/afterload.cpp70
1 files changed, 11 insertions, 59 deletions
diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp
index 452dbb997..b69ca6e2d 100644
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -606,9 +606,7 @@ bool AfterLoadGame()
switch (GetTileType(t)) {
case MP_STATION: {
Station *st = Station::GetByTile(t);
-
- /* Set up station spread; buoys do not have one */
- if (!IsBuoy(t)) st->rect.BeforeAddTile(t, StationRect::ADD_FORCE);
+ if (st == NULL) break;
switch (GetStationType(t)) {
case STATION_TRUCK:
@@ -987,29 +985,11 @@ bool AfterLoadGame()
FOR_ALL_COMPANIES(c) c->settings.renew_keep_length = false;
}
- /* In version 17, ground type is moved from m2 to m4 for depots and
- * 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 (CheckSavegameVersion(17)) {
- Waypoint *wp;
-
- FOR_ALL_WAYPOINTS(wp) {
- if (wp->delete_ctr == 0) {
- if (HasBit(_m[wp->xy].m3, 4)) {
- AllocateSpecToStation(GetCustomStationSpec(STAT_CLASS_WAYP, _m[wp->xy].m4 + 1), wp, true);
- }
-
- /* Move ground type bits from m2 to m4. */
- _m[wp->xy].m4 = GB(_m[wp->xy].m2, 0, 4);
- /* Store waypoint index in the tile. */
- _m[wp->xy].m2 = wp->index;
- }
- }
- } else {
- /* As of version 17, we recalculate the custom graphic ID of waypoints
- * from the GRF ID / station index. */
- AfterLoadWaypoints();
+ if (CheckSavegameVersion(123)) {
+ /* Waypoints became subclasses of stations ... */
+ MoveWaypointsToBaseStations();
+ /* ... and buoys were moved to waypoints. */
+ MoveBuoysToWaypoints();
}
/* From version 15, we moved a semaphore bit from bit 2 to bit 3 in m4, making
@@ -1275,9 +1255,9 @@ bool AfterLoadGame()
/* Buoys do now store the owner of the previous water tile, which can never
* be OWNER_NONE. So replace OWNER_NONE with OWNER_WATER. */
if (CheckSavegameVersion(46)) {
- Station *st;
- FOR_ALL_STATIONS(st) {
- if (st->IsBuoy() && IsTileOwner(st->xy, OWNER_NONE) && TileHeight(st->xy) == 0) SetTileOwner(st->xy, OWNER_WATER);
+ Waypoint *wp;
+ FOR_ALL_WAYPOINTS(wp) {
+ if ((wp->facilities & FACIL_DOCK) != 0 && IsTileOwner(wp->xy, OWNER_NONE) && TileHeight(wp->xy) == 0) SetTileOwner(wp->xy, OWNER_WATER);
}
}
@@ -1487,15 +1467,6 @@ bool AfterLoadGame()
}
if (CheckSavegameVersion(84)) {
- /* Update go to buoy orders because they are just waypoints */
- Order *order;
- FOR_ALL_ORDERS(order) {
- if (order->IsType(OT_GOTO_STATION) && Station::Get(order->GetDestination())->IsBuoy()) {
- order->SetLoadType(OLF_LOAD_IF_POSSIBLE);
- order->SetUnloadType(OUF_UNLOAD_IF_POSSIBLE);
- }
- }
-
/* Set all share owners to INVALID_COMPANY for
* 1) all inactive companies
* (when inactive companies were stored in the savegame - TTD, TTDP and some
@@ -1561,7 +1532,7 @@ bool AfterLoadGame()
if (IsBuoyTile(t)) {
/* reset buoy owner to OWNER_NONE in the station struct
* (even if it is owned by active company) */
- Station::GetByTile(t)->owner = OWNER_NONE;
+ Waypoint::GetByTile(t)->owner = OWNER_NONE;
}
} else if (IsTileType(t, MP_ROAD)) {
/* works for all RoadTileType */
@@ -1805,16 +1776,6 @@ bool AfterLoadGame()
FOR_ALL_STATIONS(st) {
if (!Company::IsValidID(st->owner)) st->owner = OWNER_NONE;
}
-
- /* Give owners to waypoints, based on rail tracks it is sitting on.
- * If none is available, specify OWNER_NONE.
- * This code was in CheckSavegameVersion(101) in the past, but in some cases,
- * the owner of waypoints could be incorrect. */
- Waypoint *wp;
- FOR_ALL_WAYPOINTS(wp) {
- Owner owner = IsTileType(wp->xy, MP_RAILWAY) ? GetTileOwner(wp->xy) : OWNER_NONE;
- wp->owner = Company::IsValidID(owner) ? owner : OWNER_NONE;
- }
}
/* Trains could now stop in a specific location. */
@@ -1913,14 +1874,6 @@ bool AfterLoadGame()
}
s->cargo_type = CT_INVALID;
}
-
- Order *o;
- FOR_ALL_ORDERS(o) {
- /* Buoys are now go to waypoint orders */
- if (!o->IsType(OT_GOTO_STATION) || !Station::Get(o->GetDestination())->IsBuoy()) continue;
-
- o->MakeGoToWaypoint(o->GetDestination());
- }
}
AfterLoadLabelMaps();
@@ -1950,8 +1903,7 @@ void ReloadNewGRFData()
AfterLoadVehicles(false);
StartupEngines();
SetCachedEngineCounts();
- /* update station and waypoint graphics */
- AfterLoadWaypoints();
+ /* update station graphics */
AfterLoadStations();
/* Check and update house and town values */
UpdateHousesAndTowns();