Changeset - r15836:1aab5752a031
[Not reviewed]
master
0 1 0
yexo - 14 years ago 2010-08-17 21:46:25
yexo@openttd.org
(svn r20528) -Fix: in old savegames aircraft can have an invalid state
1 file changed with 20 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/saveload/afterload.cpp
Show inline comments
 
@@ -2226,6 +2226,26 @@ bool AfterLoadGame()
 
		FOR_ALL_DEPOTS(d) d->build_date = _date;
 
	}
 

	
 
	/* In old versions it was possible to remove an airport while a plane was
 
	 * taking off or landing. This gives all kind of problems when building
 
	 * another airport in the same station so we don't allow that anymore.
 
	 * For old savegames with such aircraft we just throw them in the air and
 
	 * treat the aircraft like they were flying already. */
 
	if (CheckSavegameVersion(146)) {
 
		Aircraft *v;
 
		FOR_ALL_AIRCRAFT(v) {
 
			if (!v->IsNormalAircraft()) continue;
 
			Station *st = GetTargetAirportIfValid(v);
 
			if (st == NULL && v->state != FLYING) {
 
				v->state = FLYING;
 
				UpdateAircraftCache(v);
 
				AircraftNextAirportPos_and_Order(v);
 
				/* get aircraft back on running altitude */
 
				if ((v->vehstatus & VS_CRASHED) == 0) SetAircraftPosition(v, v->x_pos, v->y_pos, GetAircraftFlyingAltitude(v));
 
			}
 
		}
 
	}
 

	
 
	/* Road stops is 'only' updating some caches */
 
	AfterLoadRoadStops();
 
	AfterLoadLabelMaps();
0 comments (0 inline, 0 general)