OpenTTD Source  20241108-master-g80f628063a
timetable_cmd.cpp File Reference

Commands related to time tabling. More...

#include "stdafx.h"
#include "command_func.h"
#include "company_func.h"
#include "timer/timer_game_tick.h"
#include "timer/timer_game_economy.h"
#include "window_func.h"
#include "vehicle_base.h"
#include "timetable_cmd.h"
#include "timetable.h"
#include "table/strings.h"
#include "safeguards.h"

Go to the source code of this file.

Functions

TimerGameTick::TickCounter GetStartTickFromDate (TimerGameEconomy::Date start_date)
 Get the TimerGameTick::TickCounter tick of a given date. More...
 
TimerGameEconomy::Date GetDateFromStartTick (TimerGameTick::TickCounter start_tick)
 Get a date from a given start tick of timetable. More...
 
static void ChangeTimetable (Vehicle *v, VehicleOrderID order_number, uint16_t val, ModifyTimetableFlags mtf, bool timetabled)
 Change/update a particular timetable entry. More...
 
CommandCost CmdChangeTimetable (DoCommandFlag flags, VehicleID veh, VehicleOrderID order_number, ModifyTimetableFlags mtf, uint16_t data)
 Change timetable data of an order. More...
 
CommandCost CmdBulkChangeTimetable (DoCommandFlag flags, VehicleID veh, ModifyTimetableFlags mtf, uint16_t data)
 Change timetable data of all orders of a vehicle. More...
 
CommandCost CmdSetVehicleOnTime (DoCommandFlag flags, VehicleID veh, bool apply_to_group)
 Clear the lateness counter to make the vehicle on time. More...
 
static bool VehicleTimetableSorter (Vehicle *const &a, Vehicle *const &b)
 Order vehicles based on their timetable. More...
 
CommandCost CmdSetTimetableStart (DoCommandFlag flags, VehicleID veh_id, bool timetable_all, TimerGameTick::TickCounter start_tick)
 Set the start date of the timetable. More...
 
CommandCost CmdAutofillTimetable (DoCommandFlag flags, VehicleID veh, bool autofill, bool preserve_wait_time)
 Start or stop filling the timetable automatically from the time the vehicle actually takes to complete it. More...
 
void UpdateVehicleTimetable (Vehicle *v, bool travelling)
 Update the timetable for the vehicle. More...
 

Detailed Description

Commands related to time tabling.

Definition in file timetable_cmd.cpp.

Function Documentation

◆ ChangeTimetable()

static void ChangeTimetable ( Vehicle v,
VehicleOrderID  order_number,
uint16_t  val,
ModifyTimetableFlags  mtf,
bool  timetabled 
)
static

Change/update a particular timetable entry.

Parameters
vThe vehicle to change the timetable of.
order_numberThe index of the timetable in the order list.
valThe new data of the timetable entry.
mtfWhich part of the timetable entry to change.
timetabledIf the new value is explicitly timetabled.

Definition at line 66 of file timetable_cmd.cpp.

◆ CmdAutofillTimetable()

CommandCost CmdAutofillTimetable ( DoCommandFlag  flags,
VehicleID  veh,
bool  autofill,
bool  preserve_wait_time 
)

Start or stop filling the timetable automatically from the time the vehicle actually takes to complete it.

When starting to autofill the current times are cleared and the timetable will start again from scratch.

Parameters
flagsOperation to perform.
vehVehicle index.
autofillEnable or disable autofill
preserve_wait_timeSet to preserve waiting times in non-destructive mode
Returns
the cost of this operation or an error

Definition at line 425 of file timetable_cmd.cpp.

References CheckOwnership(), ClrBit(), CMD_ERROR, DC_EXEC, CommandCost::Failed(), Vehicle::FirstShared(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), Vehicle::IsPrimaryVehicle(), BaseConsist::lateness_counter, Vehicle::NextShared(), Vehicle::orders, Vehicle::owner, SetBit(), SetWindowDirty(), BaseConsist::timetable_start, BaseConsist::vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME, VF_AUTOFILL_TIMETABLE, VF_TIMETABLE_STARTED, and WC_VEHICLE_TIMETABLE.

◆ CmdBulkChangeTimetable()

CommandCost CmdBulkChangeTimetable ( DoCommandFlag  flags,
VehicleID  veh,
ModifyTimetableFlags  mtf,
uint16_t  data 
)

Change timetable data of all orders of a vehicle.

Parameters
flagsOperation to perform.
vehVehicle with the orders to change.
mtfTimetable data to change (
See also
ModifyTimetableFlags)
Parameters
dataThe data to modify as specified by mtf. 0 to clear times, UINT16_MAX to clear speed limit.
Returns
the cost of this operation or an error

Definition at line 228 of file timetable_cmd.cpp.

◆ CmdChangeTimetable()

CommandCost CmdChangeTimetable ( DoCommandFlag  flags,
VehicleID  veh,
VehicleOrderID  order_number,
ModifyTimetableFlags  mtf,
uint16_t  data 
)

Change timetable data of an order.

Parameters
flagsOperation to perform.
vehVehicle with the orders to change.
order_numberOrder index to modify.
mtfTimetable data to change (
See also
ModifyTimetableFlags)
Parameters
dataThe data to modify as specified by mtf. 0 to clear times, UINT16_MAX to clear speed limit.
Returns
the cost of this operation or an error

Definition at line 133 of file timetable_cmd.cpp.

◆ CmdSetTimetableStart()

◆ CmdSetVehicleOnTime()

CommandCost CmdSetVehicleOnTime ( DoCommandFlag  flags,
VehicleID  veh,
bool  apply_to_group 
)

◆ GetDateFromStartTick()

TimerGameEconomy::Date GetDateFromStartTick ( TimerGameTick::TickCounter  start_tick)

Get a date from a given start tick of timetable.

Parameters
start_tickThe TimerGameTick::TickCounter when the timetable starts.
Returns
The date when we reach this tick.

Definition at line 46 of file timetable_cmd.cpp.

References TimerGameTick::counter, TimerGameEconomy::date, TimerGameEconomy::date_fract, and Ticks::DAY_TICKS.

Referenced by CmdSetTimetableStart().

◆ GetStartTickFromDate()

TimerGameTick::TickCounter GetStartTickFromDate ( TimerGameEconomy::Date  start_date)

Get the TimerGameTick::TickCounter tick of a given date.

Parameters
start_dateThe date when the timetable starts.
Returns
The first tick of this date.

Definition at line 29 of file timetable_cmd.cpp.

References TimerGameTick::counter, TimerGameEconomy::date, TimerGameEconomy::date_fract, and Ticks::DAY_TICKS.

Referenced by ChangeTimetableStartCallback().

◆ UpdateVehicleTimetable()

void UpdateVehicleTimetable ( Vehicle v,
bool  travelling 
)

Update the timetable for the vehicle.

Parameters
vThe vehicle to update the timetable for.
travellingWhether we just travelled or waited at a station.

Definition at line 469 of file timetable_cmd.cpp.

References Vehicle::current_order, BaseConsist::current_order_time, and Order::IsType().

◆ VehicleTimetableSorter()

static bool VehicleTimetableSorter ( Vehicle *const &  a,
Vehicle *const &  b 
)
static

Order vehicles based on their timetable.

The vehicles will be sorted in order they would reach the first station.

Parameters
aFirst Vehicle pointer.
bSecond Vehicle pointer.
Returns
Comparison value.

Definition at line 313 of file timetable_cmd.cpp.

References BaseConsist::cur_real_order_index, Vehicle::current_order, and Order::IsType().