diff options
author | rubidium <rubidium@openttd.org> | 2009-09-01 21:54:59 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-09-01 21:54:59 +0000 |
commit | 6b2ff71e2c44897fcc6abbb125259823a85ed1d4 (patch) | |
tree | 27cb9e585c49ac9bf02969aa4c583d71bd5bf776 | |
parent | ef5a0a3ae4f032acdbb968a022163646f6a064a5 (diff) | |
download | openttd-6b2ff71e2c44897fcc6abbb125259823a85ed1d4.tar.xz |
(svn r17363) -Fix [FS#3163] (r16717): feed autoreplace the front of vehicles, otherwise it gets distracted and bails out
-rw-r--r-- | src/rail_cmd.cpp | 2 | ||||
-rw-r--r-- | src/road_cmd.cpp | 2 | ||||
-rw-r--r-- | src/vehicle.cpp | 5 |
3 files changed, 5 insertions, 4 deletions
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 453414fde..24792baab 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -2419,7 +2419,7 @@ static VehicleEnterTileStatus VehicleEnter_Track(Vehicle *u, TileIndex tile, int v->track = TRACK_BIT_DEPOT, v->vehstatus |= VS_HIDDEN; // hide it v->direction = ReverseDir(v->direction); - if (v->Next() == NULL) VehicleEnterDepot(v); + if (v->Next() == NULL) VehicleEnterDepot(v->First()); v->tile = tile; InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 8f561c222..754d6fd97 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -1550,7 +1550,7 @@ static VehicleEnterTileStatus VehicleEnter_Road(Vehicle *v, TileIndex tile, int rv->state = RVSB_IN_DEPOT; rv->vehstatus |= VS_HIDDEN; rv->direction = ReverseDir(rv->direction); - if (rv->Next() == NULL) VehicleEnterDepot(rv); + if (rv->Next() == NULL) VehicleEnterDepot(rv->First()); rv->tile = tile; InvalidateWindowData(WC_VEHICLE_DEPOT, rv->tile); diff --git a/src/vehicle.cpp b/src/vehicle.cpp index a8509e18a..3b858e60d 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -954,6 +954,9 @@ uint8 CalcPercentVehicleFilled(const Vehicle *v, StringID *colour) void VehicleEnterDepot(Vehicle *v) { + /* Always work with the front of the vehicle */ + assert(v == v->First()); + switch (v->type) { case VEH_TRAIN: { Train *t = Train::From(v); @@ -962,7 +965,6 @@ void VehicleEnterDepot(Vehicle *v) SetDepotReservation(t->tile, false); if (_settings_client.gui.show_track_reservation) MarkTileDirtyByTile(t->tile); - if (!t->IsFrontEngine()) t = t->First(); UpdateSignalsOnSegment(t->tile, INVALID_DIAGDIR, t->owner); t->load_unload_time_rem = 0; ClrBit(t->flags, VRF_TOGGLE_REVERSE); @@ -972,7 +974,6 @@ void VehicleEnterDepot(Vehicle *v) case VEH_ROAD: InvalidateWindowClasses(WC_ROADVEH_LIST); - if (!RoadVehicle::From(v)->IsRoadVehFront()) v = v->First(); break; case VEH_SHIP: |