OpenTTD Source 20241224-master-gf74b0cf984
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.
 
TimerGameEconomy::Date GetDateFromStartTick (TimerGameTick::TickCounter start_tick)
 Get a date from a given start tick of timetable.
 
static void ChangeTimetable (Vehicle *v, VehicleOrderID order_number, uint16_t val, ModifyTimetableFlags mtf, bool timetabled)
 Change/update a particular timetable entry.
 
CommandCost CmdChangeTimetable (DoCommandFlag flags, VehicleID veh, VehicleOrderID order_number, ModifyTimetableFlags mtf, uint16_t data)
 Change timetable data of an order.
 
CommandCost CmdBulkChangeTimetable (DoCommandFlag flags, VehicleID veh, ModifyTimetableFlags mtf, uint16_t data)
 Change timetable data of all orders of a vehicle.
 
CommandCost CmdSetVehicleOnTime (DoCommandFlag flags, VehicleID veh, bool apply_to_group)
 Clear the lateness counter to make the vehicle on time.
 
static bool VehicleTimetableSorter (Vehicle *const &a, Vehicle *const &b)
 Order vehicles based on their timetable.
 
CommandCost CmdSetTimetableStart (DoCommandFlag flags, VehicleID veh_id, bool timetable_all, TimerGameTick::TickCounter start_tick)
 Set the start date of the timetable.
 
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.
 
void UpdateVehicleTimetable (Vehicle *v, bool travelling)
 Update the timetable for the vehicle.
 

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

◆ 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::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.

References CheckOwnership(), CMD_ERROR, DC_EXEC, CommandCost::Failed(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), Vehicle::GetNumOrders(), Vehicle::GetOrder(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::IsPrimaryVehicle(), Order::IsType(), and Vehicle::owner.

◆ CmdChangeTimetable()

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

◆ 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(), and TimetableWindow::DrawSummaryPanel().

◆ 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()

◆ 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, BaseConsist::current_order_time, Order::GetNonStopType(), Order::IsType(), ONSF_STOP_EVERYWHERE, and Vehicle::unitnumber.

Referenced by CmdSetTimetableStart().