Fix locked wait times not being preserved when moving orders to new station
This commit is contained in:
@@ -2867,6 +2867,8 @@ CommandCost CmdMassChangeOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
||||
Order new_order;
|
||||
new_order.AssignOrder(*order);
|
||||
new_order.SetDestination(to_dest);
|
||||
const bool wait_fixed = new_order.IsWaitFixed();
|
||||
const bool wait_timetabled = wait_fixed && new_order.IsWaitTimetabled();
|
||||
new_order.SetWaitTimetabled(false);
|
||||
new_order.SetTravelTimetabled(false);
|
||||
if (DoCommand(0, v->index | ((index + 1) << 20), new_order.Pack(), flags, CMD_INSERT_ORDER).Succeeded()) {
|
||||
@@ -2875,6 +2877,10 @@ CommandCost CmdMassChangeOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
||||
order = v->orders.list->GetOrderAt(index);
|
||||
order->SetRefit(new_order.GetRefitCargo());
|
||||
order->SetMaxSpeed(new_order.GetMaxSpeed());
|
||||
if (wait_fixed) {
|
||||
extern void SetOrderFixedWaitTime(Vehicle *v, VehicleOrderID order_number, uint32 wait_time, bool wait_timetabled);
|
||||
SetOrderFixedWaitTime(v, index, new_order.GetWaitTime(), wait_timetabled);
|
||||
}
|
||||
changed = true;
|
||||
}
|
||||
|
||||
|
@@ -997,3 +997,8 @@ void UpdateVehicleTimetable(Vehicle *v, bool travelling)
|
||||
SetWindowDirty(WC_VEHICLE_TIMETABLE, v->index);
|
||||
}
|
||||
}
|
||||
|
||||
void SetOrderFixedWaitTime(Vehicle *v, VehicleOrderID order_number, uint32 wait_time, bool wait_timetabled) {
|
||||
ChangeTimetable(v, order_number, wait_time, MTF_WAIT_TIME, wait_timetabled, true);
|
||||
ChangeTimetable(v, order_number, 1, MTF_SET_WAIT_FIXED, false, true);
|
||||
}
|
||||
|
Reference in New Issue
Block a user