Extend timetable wait/travel times from 16 to 32 bits wide

This commit is contained in:
Jonathan G Rennison
2018-10-22 18:21:30 +01:00
parent ee00a28717
commit 0e3986c39c
9 changed files with 34 additions and 28 deletions

View File

@@ -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;