|
|
|
@ -54,6 +54,7 @@ static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 val,
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MTF_TRAVEL_TIME:
|
|
|
|
|
if (!ignore_lock && order->IsTravelFixed()) return;
|
|
|
|
|
if (!order->IsType(OT_CONDITIONAL)) {
|
|
|
|
|
total_delta = val - order->GetTravelTime();
|
|
|
|
|
timetable_delta = (timetabled ? val : 0) - order->GetTimetabledTravel();
|
|
|
|
@ -71,6 +72,10 @@ static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 val,
|
|
|
|
|
order->SetWaitFixed(val != 0);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MTF_SET_TRAVEL_FIXED:
|
|
|
|
|
order->SetTravelFixed(val != 0);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MTF_SET_LEAVE_TYPE:
|
|
|
|
|
order->SetLeaveType((OrderLeaveType)val);
|
|
|
|
|
break;
|
|
|
|
@ -102,6 +107,10 @@ static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 val,
|
|
|
|
|
v->current_order.SetWaitFixed(val != 0);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MTF_SET_TRAVEL_FIXED:
|
|
|
|
|
v->current_order.SetTravelFixed(val != 0);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
NOT_REACHED();
|
|
|
|
|
}
|
|
|
|
@ -148,6 +157,7 @@ CommandCost CmdChangeTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
|
|
|
|
int travel_time = order->GetTravelTime();
|
|
|
|
|
int max_speed = order->GetMaxSpeed();
|
|
|
|
|
bool wait_fixed = order->IsWaitFixed();
|
|
|
|
|
bool travel_fixed = order->IsTravelFixed();
|
|
|
|
|
OrderLeaveType leave_type = order->GetLeaveType();
|
|
|
|
|
switch (mtf) {
|
|
|
|
|
case MTF_WAIT_TIME:
|
|
|
|
@ -169,6 +179,10 @@ CommandCost CmdChangeTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
|
|
|
|
wait_fixed = GB(p2, 0, 16) != 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MTF_SET_TRAVEL_FIXED:
|
|
|
|
|
travel_fixed = GB(p2, 0, 16) != 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MTF_SET_LEAVE_TYPE:
|
|
|
|
|
leave_type = (OrderLeaveType)GB(p2, 0, 16);
|
|
|
|
|
if (leave_type >= OLT_END) return CMD_ERROR;
|
|
|
|
@ -227,6 +241,12 @@ CommandCost CmdChangeTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MTF_SET_TRAVEL_FIXED:
|
|
|
|
|
if (travel_fixed != order->IsTravelFixed()) {
|
|
|
|
|
ChangeTimetable(v, order_number, travel_fixed ? 1 : 0, MTF_SET_TRAVEL_FIXED, false, true);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case MTF_SET_LEAVE_TYPE:
|
|
|
|
|
if (leave_type != order->GetLeaveType()) {
|
|
|
|
|
ChangeTimetable(v, order_number, leave_type, MTF_SET_LEAVE_TYPE, true);
|
|
|
|
|