changeset 17058:2bbacb524f85 draft

(svn r21795) -Fix (r21790): when converting TTDPatch train waypoints, convert the data on the map as well
author rubidium <rubidium@openttd.org>
date Fri, 14 Jan 2011 20:52:22 +0000
parents d1032dce7868
children 6b83f9415907
files src/saveload/afterload.cpp src/saveload/station_sl.cpp
diffstat 2 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -2012,8 +2012,8 @@
 		}
 	}
 
-	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) {
--- a/src/saveload/station_sl.cpp
+++ b/src/saveload/station_sl.cpp
@@ -70,6 +70,7 @@
 		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 @@
 		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);
 	}
 }