diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -2392,6 +2392,17 @@ bool AfterLoadGame() } } + if (IsSavegameVersionBefore(156)) { + /* The train's pathfinder lost flag got moved. */ + Train *t; + FOR_ALL_TRAINS(t) { + if (!HasBit(t->flags, 5)) continue; + + ClrBit(t->flags, 5); + SetBit(t->vehicle_flags, VF_PATHFINDER_LOST); + } + } + /* Road stops is 'only' updating some caches */ AfterLoadRoadStops(); AfterLoadLabelMaps(); diff --git a/src/train.h b/src/train.h --- a/src/train.h +++ b/src/train.h @@ -30,9 +30,6 @@ enum VehicleRailFlags { /* used to reverse the visible direction of the vehicle */ VRF_REVERSE_DIRECTION = 4, - /* used to mark train as lost because PF can't find the route */ - VRF_NO_PATH_TO_DESTINATION = 5, - /* used to mark that electric train engine is allowed to run on normal rail */ VRF_EL_ENGINE_ALLOWED_NORMAL_RAIL = 6, diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -2412,9 +2412,9 @@ static Track ChooseTrainTrack(Train *v, /* handle "path not found" state */ if (path_not_found) { /* PF didn't find the route */ - if (!HasBit(v->flags, VRF_NO_PATH_TO_DESTINATION)) { - /* it is first time the problem occurred, set the "path not found" flag */ - SetBit(v->flags, VRF_NO_PATH_TO_DESTINATION); + if (!HasBit(v->vehicle_flags, VF_PATHFINDER_LOST)) { + /* It is first time the problem occurred, set the "lost" flag. */ + SetBit(v->vehicle_flags, VF_PATHFINDER_LOST); /* and notify user about the event */ AI::NewEvent(v->owner, new AIEventVehicleLost(v->index)); if (_settings_client.gui.lost_train_warn && v->owner == _local_company) { @@ -2428,9 +2428,9 @@ static Track ChooseTrainTrack(Train *v, } } else { /* route found, is the train marked with "path not found" flag? */ - if (HasBit(v->flags, VRF_NO_PATH_TO_DESTINATION)) { + if (HasBit(v->vehicle_flags, VF_PATHFINDER_LOST)) { /* clear the flag as the PF's problem was solved */ - ClrBit(v->flags, VRF_NO_PATH_TO_DESTINATION); + ClrBit(v->vehicle_flags, VF_PATHFINDER_LOST); /* can we also delete the "News" item somehow? */ } } diff --git a/src/vehicle_base.h b/src/vehicle_base.h --- a/src/vehicle_base.h +++ b/src/vehicle_base.h @@ -44,6 +44,7 @@ enum VehicleFlags { VF_AUTOFILL_TIMETABLE, ///< Whether the vehicle should fill in the timetable automatically. VF_AUTOFILL_PRES_WAIT_TIME, ///< Whether non-destructive auto-fill should preserve waiting times VF_STOP_LOADING, ///< Don't load anymore during the next load cycle. + VF_PATHFINDER_LOST, ///< Vehicle's pathfinder is lost. }; /** Bit numbers used to indicate which of the #NewGRFCache values are valid. */