Extend timetable wait/travel times from 16 to 32 bits wide
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
* @param timetabled If the new value is explicitly timetabled.
|
||||
* @param ignore_lock If the change should be applied even if the value is locked.
|
||||
*/
|
||||
static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 val, ModifyTimetableFlags mtf, bool timetabled, bool ignore_lock = false)
|
||||
static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint32 val, ModifyTimetableFlags mtf, bool timetabled, bool ignore_lock = false)
|
||||
{
|
||||
Order *order = v->GetOrder(order_number);
|
||||
int total_delta = 0;
|
||||
@@ -133,7 +133,7 @@ static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 val,
|
||||
* - p1 = (bit 28-30) - Timetable data to change (@see ModifyTimetableFlags)
|
||||
* - p1 = (bit 31) - 0 to set timetable wait/travel time, 1 to clear it
|
||||
* @param p2 The amount of time to wait.
|
||||
* - p2 = (bit 0-15) - The data to modify as specified by p1 bits 28-29.
|
||||
* - p2 = - The data to modify as specified by p1 bits 28-30.
|
||||
* 0 to clear times, UINT16_MAX to clear speed limit.
|
||||
* @param text unused
|
||||
* @return the cost of this operation or an error
|
||||
@@ -157,20 +157,20 @@ CommandCost CmdChangeTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
||||
|
||||
bool clear_field = GB(p1, 31, 1) == 1;
|
||||
|
||||
int wait_time = order->GetWaitTime();
|
||||
int travel_time = order->GetTravelTime();
|
||||
TimetableTicks wait_time = order->GetWaitTime();
|
||||
TimetableTicks 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:
|
||||
wait_time = GB(p2, 0, 16);
|
||||
wait_time = p2;
|
||||
if (clear_field) assert(wait_time == 0);
|
||||
break;
|
||||
|
||||
case MTF_TRAVEL_TIME:
|
||||
travel_time = GB(p2, 0, 16);
|
||||
travel_time = p2;
|
||||
if (clear_field) assert(travel_time == 0);
|
||||
break;
|
||||
|
||||
@@ -180,15 +180,15 @@ CommandCost CmdChangeTimetable(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
||||
break;
|
||||
|
||||
case MTF_SET_WAIT_FIXED:
|
||||
wait_fixed = GB(p2, 0, 16) != 0;
|
||||
wait_fixed = p2 != 0;
|
||||
break;
|
||||
|
||||
case MTF_SET_TRAVEL_FIXED:
|
||||
travel_fixed = GB(p2, 0, 16) != 0;
|
||||
travel_fixed = p2 != 0;
|
||||
break;
|
||||
|
||||
case MTF_SET_LEAVE_TYPE:
|
||||
leave_type = (OrderLeaveType)GB(p2, 0, 16);
|
||||
leave_type = (OrderLeaveType)p2;
|
||||
if (leave_type >= OLT_END) return CMD_ERROR;
|
||||
break;
|
||||
|
||||
|
Reference in New Issue
Block a user