Changeset - r11845:6e7608e2724f
[Not reviewed]
master
0 1 0
frosch - 15 years ago 2009-05-06 13:15:07
frosch@openttd.org
(svn r16240) -Fix: Make 'stop in depot'-orders only apply on the target depot, not those which are entered on the way to them.
1 file changed with 4 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/vehicle.cpp
Show inline comments
 
@@ -597,17 +597,14 @@ Vehicle::~Vehicle()
 

	
 
/** Adds a vehicle to the list of vehicles, that visited a depot this tick
 
 * @param *v vehicle to add
 
 */
 
void VehicleEnteredDepotThisTick(Vehicle *v)
 
{
 
	/* Vehicle should stop in the depot if it was in 'stopping' state or
 
	 * when the vehicle is ordered to halt in the depot. */
 
	_vehicles_to_autoreplace[v] = !(v->vehstatus & VS_STOPPED) &&
 
			(!v->current_order.IsType(OT_GOTO_DEPOT) ||
 
			 !(v->current_order.GetDepotActionType() & ODATFB_HALT));
 
	/* Vehicle should stop in the depot if it was in 'stopping' state */
 
	_vehicles_to_autoreplace[v] = !(v->vehstatus & VS_STOPPED);
 

	
 
	/* We ALWAYS set the stopped state. Even when the vehicle does not plan on
 
	 * stopping in the depot, so we stop it to ensure that it will not reserve
 
	 * the path out of the depot before we might autoreplace it to a different
 
	 * engine. The new engine would not own the reserved path we store that we
 
	 * stopped the vehicle, so autoreplace can start it again */
 
@@ -1070,14 +1067,14 @@ void VehicleEnterDepot(Vehicle *v)
 
		if (t.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) {
 
			/* Part of orders */
 
			UpdateVehicleTimetable(v, true);
 
			v->cur_order_index++;
 
		}
 
		if (t.GetDepotActionType() & ODATFB_HALT) {
 
			/* Force depot visit */
 
			v->vehstatus |= VS_STOPPED;
 
			/* Vehicles are always stopped on entering depots. Do not restart this one. */
 
			_vehicles_to_autoreplace[v] = false;
 
			if (v->owner == _local_company) {
 
				StringID string;
 

	
 
				switch (v->type) {
 
					case VEH_TRAIN:    string = STR_VEHICLE_STATUS_WAITING_IN_DEPOT; break;
 
					case VEH_ROAD:     string = STR_NEWS_ROAD_VEHICLE_IS_WAITING;   break;
0 comments (0 inline, 0 general)