diff src/openttd.cpp @ 5879:abfe68a96c2f draft

(svn r8477) -Fix -Codechange: Remove the unnecessary attributes Station::{bus,lorry}_tile_obsolete by replacing them with a scan of the map for existing road stops when loading old savegames
author tron <tron@openttd.org>
date Wed, 31 Jan 2007 06:25:46 +0000
parents 1ab2872708ff
children a44e494ecc90
line wrap: on
line diff
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -1282,6 +1282,22 @@
 	// In 5.1, Oilrigs have been moved (again)
 	if (CheckSavegameVersionOldStyle(5, 1)) UpdateOilRig();
 
+	/* From this version on there can be multiple road stops of the same type per
+	 * station. Convert the existing stops to the new internal data structure.
+	 */
+	if (CheckSavegameVersion(6)) {
+		for (TileIndex t = 0; t < map_size; t++) {
+			if (IsRoadStopTile(t)) {
+				RoadStop *rs = new RoadStop(t);
+				if (rs == NULL) error("Too many road stops in savegame");
+
+				Station *st = GetStationByTile(t);
+				RoadStop **head = IsTruckStop(t) ? &st->truck_stops : &st->bus_stops;
+				*head = rs;
+			}
+		}
+	}
+
 	/* 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 ;) */