(svn r26594) -Fix [FS#6006]: Don't call UpdateVehicleTimetable with dummy orders

pull/155/head
fonsinchen 10 years ago
parent 3e7cd6d6c1
commit 957b7c0199

@ -1403,21 +1403,19 @@ void VehicleEnterDepot(Vehicle *v)
SetWindowDirty(WC_VEHICLE_VIEW, v->index); SetWindowDirty(WC_VEHICLE_VIEW, v->index);
const Order *real_order = v->GetOrder(v->cur_real_order_index); const Order *real_order = v->GetOrder(v->cur_real_order_index);
Order t = v->current_order;
v->current_order.MakeDummy();
/* Test whether we are heading for this depot. If not, do nothing. /* Test whether we are heading for this depot. If not, do nothing.
* Note: The target depot for nearest-/manual-depot-orders is only updated on junctions, but we want to accept every depot. */ * Note: The target depot for nearest-/manual-depot-orders is only updated on junctions, but we want to accept every depot. */
if ((t.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) && if ((v->current_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) &&
real_order != NULL && !(real_order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) && real_order != NULL && !(real_order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) &&
(v->type == VEH_AIRCRAFT ? t.GetDestination() != GetStationIndex(v->tile) : v->dest_tile != v->tile)) { (v->type == VEH_AIRCRAFT ? v->current_order.GetDestination() != GetStationIndex(v->tile) : v->dest_tile != v->tile)) {
/* We are heading for another depot, keep driving. */ /* We are heading for another depot, keep driving. */
return; return;
} }
if (t.IsRefit()) { if (v->current_order.IsRefit()) {
Backup<CompanyByte> cur_company(_current_company, v->owner, FILE_LINE); Backup<CompanyByte> cur_company(_current_company, v->owner, FILE_LINE);
CommandCost cost = DoCommand(v->tile, v->index, t.GetRefitCargo() | 0xFF << 8, DC_EXEC, GetCmdRefitVeh(v)); CommandCost cost = DoCommand(v->tile, v->index, v->current_order.GetRefitCargo() | 0xFF << 8, DC_EXEC, GetCmdRefitVeh(v));
cur_company.Restore(); cur_company.Restore();
if (cost.Failed()) { if (cost.Failed()) {
@ -1435,13 +1433,13 @@ void VehicleEnterDepot(Vehicle *v)
} }
} }
if (t.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) { if (v->current_order.GetDepotOrderType() & ODTFB_PART_OF_ORDERS) {
/* Part of orders */ /* Part of orders */
v->DeleteUnreachedImplicitOrders(); v->DeleteUnreachedImplicitOrders();
UpdateVehicleTimetable(v, true); UpdateVehicleTimetable(v, true);
v->IncrementImplicitOrderIndex(); v->IncrementImplicitOrderIndex();
} }
if (t.GetDepotActionType() & ODATFB_HALT) { if (v->current_order.GetDepotActionType() & ODATFB_HALT) {
/* Vehicles are always stopped on entering depots. Do not restart this one. */ /* Vehicles are always stopped on entering depots. Do not restart this one. */
_vehicles_to_autoreplace[v] = false; _vehicles_to_autoreplace[v] = false;
/* Invalidate last_loading_station. As the link from the station /* Invalidate last_loading_station. As the link from the station
@ -1454,6 +1452,7 @@ void VehicleEnterDepot(Vehicle *v)
} }
AI::NewEvent(v->owner, new ScriptEventVehicleWaitingInDepot(v->index)); AI::NewEvent(v->owner, new ScriptEventVehicleWaitingInDepot(v->index));
} }
v->current_order.MakeDummy();
} }
} }

Loading…
Cancel
Save