mirror of https://github.com/OpenTTD/OpenTTD
(svn r20528) -Fix: in old savegames aircraft can have an invalid state
parent
cc45b99866
commit
afb60ec59c
|
@ -2226,6 +2226,26 @@ bool AfterLoadGame()
|
||||||
FOR_ALL_DEPOTS(d) d->build_date = _date;
|
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 */
|
/* Road stops is 'only' updating some caches */
|
||||||
AfterLoadRoadStops();
|
AfterLoadRoadStops();
|
||||||
AfterLoadLabelMaps();
|
AfterLoadLabelMaps();
|
||||||
|
|
Loading…
Reference in New Issue