From 85255ea001c975602c5129911b108c03db848471 Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 14 Jan 2011 20:52:22 +0000 Subject: (svn r21795) -Fix (r21790): when converting TTDPatch train waypoints, convert the data on the map as well --- src/saveload/afterload.cpp | 4 ++-- src/saveload/station_sl.cpp | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 7694bcc9a..b56a33215 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -2012,8 +2012,8 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(124)) { - /* The train station tile area was added */ + if (IsSavegameVersionBefore(124) && !IsSavegameVersionBefore(1)) { + /* The train station tile area was added, but for really old (TTDPatch) it's already valid. */ Waypoint *wp; FOR_ALL_WAYPOINTS(wp) { if (wp->facilities & FACIL_TRAIN) { diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp index 8074040ee..b0535d9d2 100644 --- a/src/saveload/station_sl.cpp +++ b/src/saveload/station_sl.cpp @@ -70,6 +70,7 @@ void MoveBuoysToWaypoints() Date build_date = st->build_date; /* TTDPatch could use "buoys with rail station" for rail waypoints */ bool train = st->train_station.tile != INVALID_TILE; + TileArea train_st = st->train_station; /* Delete the station, so we can make it a real waypoint. */ delete st; @@ -85,12 +86,20 @@ void MoveBuoysToWaypoints() if (IsInsideBS(string_id, STR_SV_STNAME_BUOY, 9)) wp->town_cn = string_id - STR_SV_STNAME_BUOY; if (train) { + /* When we make a rail waypoint of the station, convert the map as well. */ + TILE_AREA_LOOP(t, train_st) { + if (!IsTileType(t, MP_STATION) || GetStationIndex(t) != index) continue; + + SB(_m[t].m6, 3, 3, STATION_WAYPOINT); + wp->rect.BeforeAddTile(t, StationRect::ADD_FORCE); + } + + wp->train_station = train_st; wp->facilities |= FACIL_TRAIN; } else if (IsBuoyTile(xy) && GetStationIndex(xy) == index) { + wp->rect.BeforeAddTile(xy, StationRect::ADD_FORCE); wp->facilities |= FACIL_DOCK; } - - wp->rect.BeforeAddTile(xy, StationRect::ADD_FORCE); } } -- cgit v1.2.3-54-g00ecf