OpenTTD Source: Train Struct Reference

OpenTTD Source 14.0-beta1

Public Member Functions | Data Fields | Protected Member Functions | Friends
Train Struct Referencefinal

'Train' is either a loco or a wagon. More...

`#include <train.h>`

Inheritance diagram for Train:

## Public Member Functions
| Train ()
| We don't want GCC to zero our struct! It already is zeroed and has an index!
virtual | ~Train ()
| We want to 'destruct' the right class.
void | MarkDirty () override
| Goods at the consist have changed, update the graphics, cargo, and acceleration.
void | UpdateDeltaXY () override
| Updates the x and y offsets and the size of the sprite used for this vehicle.
ExpensesType | GetExpenseType (bool income) const override
void | PlayLeaveStationSound (bool force=false) const override
| Play a sound for a train leaving the station.
bool | IsPrimaryVehicle () const override
| Whether this is the primary vehicle in the chain.
void | GetImage (Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const override
| Get the sprite to display the train. More...
int | GetDisplaySpeed () const override
| Gets the speed in km-ish/h that can be sent into SetDParam for string processing. More...
int | GetDisplayMaxSpeed () const override
| Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing. More...
Money | GetRunningCost () const override
| Get running cost for the train consist. More...
int | GetCursorImageOffset () const
int | GetDisplayImageWidth (Point *offset=nullptr) const
| Get the width of a train vehicle image in the GUI. More...
bool | IsInDepot () const override
| Check whether the vehicle is in the depot. More...
bool | Tick () override
| Update train vehicle data for a tick. More...
void | OnNewCalendarDay () override
| Calendar day handler.
void | OnNewEconomyDay () override
| Economy day handler.
uint | Crash (bool flooded=false) override
| The train vehicle crashed! Update its status and other parts around it. More...
Trackdir | GetVehicleTrackdir () const override
| Get the tracks of the train vehicle. More...
TileIndex | GetOrderStationLocation (StationID station) override
| Get the location of the next station to visit. More...
ClosestDepot | FindClosestDepot () override
| Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should reverse. More...
void | ReserveTrackUnderConsist () const
| Tries to reserve track under whole train consist.
int | GetCurveSpeedLimit () const
| Computes train speed limit caused by curves. More...
void | ConsistChanged (ConsistChangeFlags allowed_changes)
| Recalculates the cached stuff of a train. More...
int | UpdateSpeed ()
| This function looks at the vehicle and updates its speed (cur_speed and subspeed) variables. More...
void | UpdateAcceleration ()
| Update acceleration of the train from the cached power and weight.
int | GetCurrentMaxSpeed () const override
| Calculates the maximum speed of the vehicle under its current conditions. More...
Train * | GetNextUnit () const
| Get the next real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist. More...
Train * | GetPrevUnit ()
| Get the previous real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist. More...
int | CalcNextVehicleOffset () const
| Calculate the offset from this vehicle's center to the following center taking the vehicle lengths into account. More...
Public Member Functions inherited from GroundVehicle< Train, VEH_TRAIN >
| GroundVehicle ()
| The constructor at SpecializedVehicle must be called.
void | PowerChanged ()
| Recalculates the cached total power of a vehicle. More...
void | CargoChanged ()
| Recalculates the cached weight of a vehicle and its parts. More...
int | GetAcceleration () const
| Calculates the acceleration of the vehicle under its current conditions. More...
bool | IsChainInDepot () const override
| Check whether the whole vehicle chain is in the depot. More...
uint | Crash (bool flooded) override
| Common code executed for crashed ground vehicles. More...
int64_t | GetSlopeResistance () const
| Calculates the total slope resistance for this vehicle. More...
void | UpdateZPositionAndInclination ()
| Updates vehicle's Z position and inclination. More...
void | UpdateZPosition ()
| Updates vehicle's Z position. More...
int | UpdateInclination (bool new_tile, bool update_delta)
| Checks if the vehicle is in a slope and sets the required flags in that case. More...
void | SetFrontEngine ()
| Set front engine state.
void | ClearFrontEngine ()
| Remove the front engine state.
void | SetArticulatedPart ()
| Set a vehicle to be an articulated part.
void | ClearArticulatedPart ()
| Clear a vehicle from being an articulated part.
void | SetWagon ()
| Set a vehicle to be a wagon.
void | ClearWagon ()
| Clear wagon property.
void | SetEngine ()
| Set engine status.
void | ClearEngine ()
| Clear engine status.
void | SetFreeWagon ()
| Set a vehicle as a free wagon.
void | ClearFreeWagon ()
| Clear a vehicle from being a free wagon.
void | SetMultiheaded ()
| Set a vehicle as a multiheaded engine.
void | ClearMultiheaded ()
| Clear multiheaded engine property.
bool | IsFreeWagon () const
| Check if the vehicle is a free wagon (got no engine in front of it). More...
bool | IsEngine () const
| Check if a vehicle is an engine (can be first in a consist). More...
bool | IsWagon () const
| Check if a vehicle is a wagon. More...
bool | IsMultiheaded () const
| Check if the vehicle is a multiheaded engine. More...
bool | IsRearDualheaded () const
| Tell if we are dealing with the rear end of a multiheaded engine. More...
void | SetLastSpeed ()
| Update the GUI variant of the current speed of the vehicle. More...
Public Member Functions inherited from SpecializedVehicle< Train, Type >
| SpecializedVehicle ()
| Set vehicle type correctly.
Train * | First () const
| Get the first vehicle in the chain. More...
Train * | Last ()
| Get the last vehicle in the chain. More...
const Train * | Last () const
| Get the last vehicle in the chain. More...
Train * | Next () const
| Get next vehicle in the chain. More...
Train * | Previous () const
| Get previous vehicle in the chain. More...
Train * | GetNextArticulatedPart ()
| Get the next part of an articulated engine. More...
Train * | GetNextArticulatedPart () const
| Get the next part of an articulated engine. More...
Train * | GetFirstEnginePart ()
| Get the first part of an articulated engine. More...
const Train * | GetFirstEnginePart () const
| Get the first part of an articulated engine. More...
Train * | GetLastEnginePart ()
| Get the last part of an articulated engine. More...
Train * | GetNextVehicle () const
| Get the next real (non-articulated part) vehicle in the consist. More...
Train * | GetPrevVehicle () const
| Get the previous real (non-articulated part) vehicle in the consist. More...
void | UpdateViewport (bool force_update, bool update_delta)
| Update vehicle sprite- and position caches. More...
Public Member Functions inherited from Vehicle
| Vehicle (VehicleType type=VEH_INVALID)
| Vehicle constructor. More...
void | PreDestructor ()
| Destroy all stuff that (still) needs the virtual functions to work properly.
virtual | ~Vehicle ()
| We want to 'destruct' the right class.
void | BeginLoading ()
| Prepare everything to begin the loading when arriving at a station. More...
void | CancelReservation (StationID next, Station *st)
| Return all reserved cargo packets to the station and reset all packets staged for transfer. More...
void | LeaveStation ()
| Perform all actions when leaving a station. More...
GroundVehicleCache * | GetGroundVehicleCache ()
| Access the ground vehicle cache of the vehicle. More...
const GroundVehicleCache * | GetGroundVehicleCache () const
uint16_t & | GetGroundVehicleFlags ()
| Access the ground vehicle flags of the vehicle. More...
const uint16_t & | GetGroundVehicleFlags () const
void | DeleteUnreachedImplicitOrders ()
| Delete all implicit orders which were not reached.
void | HandleLoading (bool mode=false)
| Handle the loading of the vehicle; when not it skips through dummy orders and does nothing in all other cases. More...
uint | GetOldAdvanceSpeed (uint speed)
| Determines the effective direction-specific vehicle movement speed. More...
uint | GetAdvanceDistance ()
| Determines the vehicle "progress" needed for moving a step. More...
virtual ExpensesType | GetExpenseType ([[maybe_unused]] bool income) const
| Sets the expense type associated to this vehicle type. More...
virtual void | PlayLeaveStationSound ([[maybe_unused]] bool force=false) const
| Play the sound associated with leaving the station. More...
const Engine * | GetEngine () const
| Retrieves the engine of the vehicle. More...
virtual void | GetImage ([[maybe_unused]] Direction direction, [[maybe_unused]] EngineImageType image_type, [[maybe_unused]] VehicleSpriteSeq *result) const
| Gets the sprite to show for the given direction. More...
const GRFFile * | GetGRF () const
| Retrieve the NewGRF the vehicle is tied to. More...
uint32_t | GetGRFID () const
| Retrieve the GRF ID of the NewGRF the vehicle is tied to. More...
void | InvalidateNewGRFCache ()
| Invalidates cached NewGRF variables. More...
void | InvalidateNewGRFCacheOfChain ()
| Invalidates cached NewGRF variables of all vehicles in the chain (after the current vehicle) More...
debug_inline bool | IsGroundVehicle () const
| Check if the vehicle is a ground vehicle. More...
virtual bool | IsChainInDepot () const
| Check whether the whole vehicle chain is in the depot. More...
bool | IsStoppedInDepot () const
| Check whether the vehicle is in the depot and stopped. More...
void | ShiftDates (TimerGameEconomy::Date interval)
| Shift all dates by given interval. More...
Money | GetDisplayRunningCost () const
| Gets the running cost of a vehicle that can be sent into SetDParam for string processing. More...
Money | GetDisplayProfitThisYear () const
| Gets the profit vehicle had this year. More...
Money | GetDisplayProfitLastYear () const
| Gets the profit vehicle had last year. More...
void | SetNext (Vehicle *next)
| Set the next vehicle of this vehicle. More...
Vehicle * | Next () const
| Get the next vehicle of this vehicle. More...
Vehicle * | Previous () const
| Get the previous vehicle of this vehicle. More...
Vehicle * | First () const
| Get the first vehicle of this vehicle chain. More...
Vehicle * | Last ()
| Get the last vehicle of this vehicle chain. More...
const Vehicle * | Last () const
| Get the last vehicle of this vehicle chain. More...
Vehicle * | Move (int n)
| Get the vehicle at offset n of this vehicle chain. More...
const Vehicle * | Move (int n) const
| Get the vehicle at offset n of this vehicle chain. More...
Order * | GetFirstOrder () const
| Get the first order of the vehicles order list. More...
void | AddToShared (Vehicle *shared_chain)
| Adds this vehicle to a shared vehicle chain. More...
void | RemoveFromShared ()
| Removes the vehicle from the shared order list.
Vehicle * | NextShared () const
| Get the next vehicle of the shared vehicle chain. More...
Vehicle * | PreviousShared () const
| Get the previous vehicle of the shared vehicle chain. More...
Vehicle * | FirstShared () const
| Get the first vehicle of this vehicle chain. More...
bool | IsOrderListShared () const
| Check if we share our orders with another vehicle. More...
VehicleOrderID | GetNumOrders () const
| Get the number of orders this vehicle has. More...
VehicleOrderID | GetNumManualOrders () const
| Get the number of manually added orders this vehicle has. More...
StationIDStack | GetNextStoppingStation () const
| Get the next station the vehicle will stop at. More...
void | ResetRefitCaps ()
| Reset all refit_cap in the consist to cargo_cap.
void | CopyVehicleConfigAndStatistics (const Vehicle *src)
| Copy certain configurations and statistics of a vehicle after successful autoreplace/renew The function shall copy everything that cannot be copied by a command (like orders / group etc), and that shall not be resetted for the new vehicle. More...
bool | HandleBreakdown ()
| Handle all of the aspects of a vehicle breakdown This includes adding smoke and sounds, and ending the breakdown when appropriate. More...
bool | NeedsAutorenewing (const Company *c, bool use_renew_setting=true) const
| Function to tell if a vehicle needs to be autorenewed. More...
bool | NeedsServicing () const
| Check if the vehicle needs to go to a depot in near future (if a opportunity presents itself) for service or replacement. More...
bool | NeedsAutomaticServicing () const
| Checks if the current order should be interrupted for a service-in-depot order. More...
virtual TileIndex | GetOrderStationLocation ([[maybe_unused]] StationID station)
| Determine the location for the station where the vehicle goes to next. More...
virtual void | SetDestTile (TileIndex tile)
CommandCost | SendToDepot (DoCommandFlag flags, DepotCommand command)
| Send this vehicle to the depot using the given command(s). More...
void | UpdateVisualEffect (bool allow_power_change=true)
| Update the cached visual effect. More...
void | ShowVisualEffect () const
| Draw visual effects (smoke and/or sparks) for a vehicle chain. More...
void | UpdatePosition ()
| Update the position of the vehicle. More...
void | UpdateViewport (bool dirty)
| Update the vehicle on the viewport, updating the right hash and setting the new coordinates. More...
void | UpdateBoundingBoxCoordinates (bool update_cache) const
| Update the bounding box co-ordinates of the vehicle. More...
void | UpdatePositionAndViewport ()
| Update the position of the vehicle, and update the viewport.
bool | MarkAllViewportsDirty () const
| Marks viewports dirty where the vehicle's image is. More...
uint16_t | GetServiceInterval () const
void | SetServiceInterval (uint16_t interval)
bool | ServiceIntervalIsCustom () const
bool | ServiceIntervalIsPercent () const
void | SetServiceIntervalIsCustom (bool on)
void | SetServiceIntervalIsPercent (bool on)
bool | HasUnbunchingOrder () const
| Check if the current vehicle has an unbunching order. More...
void | LeaveUnbunchingDepot ()
| Leave an unbunching depot and calculate the next departure time for shared order vehicles.
bool | IsWaitingForUnbunching () const
| Check whether a vehicle inside a depot is waiting for unbunching. More...
void | IncrementImplicitOrderIndex ()
| Increments cur_implicit_order_index, keeps care of the wrap-around and invalidates the GUI. More...
void | IncrementRealOrderIndex ()
| Advanced cur_real_order_index to the next real order, keeps care of the wrap-around and invalidates the GUI. More...
void | UpdateRealOrderIndex ()
| Skip implicit orders until cur_real_order_index is a non-implicit order.
Order * | GetOrder (int index) const
| Returns order 'index' of a vehicle or nullptr when it doesn't exists. More...
Order * | GetLastOrder () const
| Returns the last order of a vehicle, or nullptr if it doesn't exists. More...
bool | IsEngineCountable () const
| Check if a vehicle is counted in num_engines in each company struct. More...
bool | HasEngineType () const
| Check whether Vehicle::engine_type has any meaning. More...
bool | HasDepotOrder () const
| Checks if a vehicle has a depot in its order list. More...
void | HandlePathfindingResult (bool path_found)
| Handle the pathfinding result, especially the lost status. More...
debug_inline bool | IsFrontEngine () const
| Check if the vehicle is a front engine. More...
bool | IsArticulatedPart () const
| Check if the vehicle is an articulated part of an engine. More...
bool | HasArticulatedPart () const
| Check if an engine has an articulated part. More...
Vehicle * | GetNextArticulatedPart () const
| Get the next part of an articulated engine. More...
Vehicle * | GetFirstEnginePart ()
| Get the first part of an articulated engine. More...
const Vehicle * | GetFirstEnginePart () const
| Get the first part of an articulated engine. More...
Vehicle * | GetLastEnginePart ()
| Get the last part of an articulated engine. More...
Vehicle * | GetNextVehicle () const
| Get the next real (non-articulated part) vehicle in the consist. More...
Vehicle * | GetPrevVehicle () const
| Get the previous real (non-articulated part) vehicle in the consist. More...
IterateWrapper | Orders () const
| Returns an iterable ensemble of orders of a vehicle. More...
uint32_t | GetDisplayMaxWeight () const
| Calculates the maximum weight of the ground vehicle when loaded. More...
uint32_t | GetDisplayMinPowerToWeight () const
| Calculates the minimum power-to-weight ratio using the maximum weight of the ground vehicle. More...
Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >
void * | operator new (size_t size)
| Allocates space for new Titem. More...
void * | operator new (size_t size, size_t index)
| Allocates space for new Titem with given index. More...
void * | operator new (size_t, void *ptr)
| Allocates space for new Titem at given memory address. More...
void | operator delete (void *p)
| Marks Titem as free. More...
Public Member Functions inherited from BaseConsist
void | CopyConsistPropertiesFrom (const BaseConsist *src)
| Copy properties of other BaseConsist. More...
void | ResetDepotUnbunching ()
| Resets all the data used for depot unbunching.

## Data Fields
TrainCache | tcache
Train * | other_multiheaded_part
uint16_t | crash_anim_pos
| Crash animation counter.
uint16_t | flags
TrackBits | track
TrainForceProceeding | force_proceed
RailType | railtype
RailTypes | compatible_railtypes
uint16_t | wait_counter
| Ticks waiting in front of a signal, ticks being stuck or a counter for forced proceeding through signals.
Data Fields inherited from GroundVehicle< Train, VEH_TRAIN >
GroundVehicleCache | gcache
| Cache of often calculated values.
uint16_t | gv_flags
Data Fields inherited from Vehicle
TileIndex | tile
| Current tile index.
TileIndex | dest_tile
| Heading for this tile. More...
Money | profit_this_year
| Profit this year << 8, low 8 bits are fract.
Money | profit_last_year
| Profit last year << 8, low 8 bits are fract.
Money | value
| Value of the vehicle.
CargoPayment * | cargo_payment
| The cargo payment we're currently in.
Rect | coord
| NOSAVE: Graphical bounding box of the vehicle, i.e. what to redraw on moves.
Vehicle * | hash_viewport_next
| NOSAVE: Next vehicle in the visual location hash.
Vehicle ** | hash_viewport_prev
| NOSAVE: Previous vehicle in the visual location hash.
Vehicle * | hash_tile_next
| NOSAVE: Next vehicle in the tile location hash.
Vehicle ** | hash_tile_prev
| NOSAVE: Previous vehicle in the tile location hash.
Vehicle ** | hash_tile_current
| NOSAVE: Cache of the current hash chain.
SpriteID | colourmap
| NOSAVE: cached colour mapping.
TimerGameCalendar::Year | build_year
| Year the vehicle has been built.
TimerGameCalendar::Date | age
| Age in days.
TimerGameCalendar::Date | max_age
| Maximum age.
TimerGameEconomy::Date | date_of_last_service
| Last economy date the vehicle had a service at a depot.
TimerGameCalendar::Date | date_of_last_service_newgrf
| Last calendar date the vehicle had a service at a depot, unchanged by the date cheat to protect against unsafe NewGRF behavior.
uint16_t | reliability
| Reliability.
uint16_t | reliability_spd_dec
| Reliability decrease speed.
byte | breakdown_ctr
| Counter for managing breakdown events. More...
byte | breakdown_delay
| Counter for managing breakdown length.
byte | breakdowns_since_last_service
| Counter for the amount of breakdowns.
byte | breakdown_chance
| Current chance of breakdowns.
int32_t | x_pos
| x coordinate.
int32_t | y_pos
| y coordinate.
int32_t | z_pos
| z coordinate.
Direction | direction
| facing
Owner | owner
| Which company owns the vehicle?
byte | spritenum
| currently displayed sprite index 0xfd == custom sprite, 0xfe == custom second head sprite 0xff == reserved for another custom sprite
byte | x_extent
| x-extent of vehicle bounding box
byte | y_extent
| y-extent of vehicle bounding box
byte | z_extent
| z-extent of vehicle bounding box
int8_t | x_bb_offs
| x offset of vehicle bounding box
int8_t | y_bb_offs
| y offset of vehicle bounding box
int8_t | x_offs
| x offset for vehicle sprite
int8_t | y_offs
| y offset for vehicle sprite
EngineID | engine_type
| The type of engine used for this vehicle.
TextEffectID | fill_percent_te_id
| a text-effect id to a loading indicator object
UnitID | unitnumber
| unit number, for display purposes only
uint16_t | cur_speed
| current speed
byte | subspeed
| fractional speed
byte | acceleration
| used by train & aircraft
uint32_t | motion_counter
| counter to occasionally play a vehicle sound.
byte | progress
| The percentage (if divided by 256) this vehicle already crossed the tile unit.
uint16_t | random_bits
| Bits used for randomized variational spritegroups.
byte | waiting_triggers
| Triggers to be yet matched before rerandomizing the random bits.
StationID | last_station_visited
| The last station we stopped at.
StationID | last_loading_station
| Last station the vehicle has stopped at and could possibly leave from with any cargo loaded.
TimerGameTick::TickCounter | last_loading_tick
| Last TimerGameTick::counter tick that the vehicle has stopped at a station and could possibly leave with any cargo loaded.
CargoID | cargo_type
| type of cargo this vehicle is carrying
byte | cargo_subtype
| Used for livery refits (NewGRF variations)
uint16_t | cargo_cap
| total capacity
uint16_t | refit_cap
| Capacity left over from before last refit.
VehicleCargoList | cargo
| The cargo this vehicle is carrying.
uint16_t | cargo_age_counter
| Ticks till cargo is aged next.
int8_t | trip_occupancy
| NOSAVE: Occupancy of vehicle of the current trip (updated after leaving a station).
byte | day_counter
| Increased by one for each day.
byte | tick_counter
| Increased by one for each tick.
byte | running_ticks
| Number of ticks this vehicle was not stopped this day.
byte | vehstatus
| Status.
Order | current_order
| The current order (+ status, like: loading)
union {
OrderList * orders
| Pointer to the order list for this vehicle.
Order * old_orders
| Only used during conversion of old save games.
}; |
uint16_t | load_unload_ticks
| Ticks to wait before starting next cycle.
GroupID | group_id
| Index of group Pool array.
byte | subtype
| subtype (Filled with values from AircraftSubType/DisasterSubType/EffectVehicleType/GroundVehicleSubtypeFlags)
NewGRFCache | grf_cache
| Cache of often used calculated NewGRF values.
VehicleCache | vcache
| Cache of often used vehicle values.
MutableSpriteCache | sprite_cache
| Cache of sprites and values related to recalculating them, see MutableSpriteCache.
Data Fields inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >
Tindex | index
| Index of this pool item.
Data Fields inherited from BaseVehicle
VehicleType | type
| Type of vehicle.
Data Fields inherited from BaseConsist
std::string | name
| Name of vehicle.
TimerGameTick::Ticks | current_order_time
| How many ticks have passed since this order started.
TimerGameTick::Ticks | lateness_counter
| How many ticks late (or early if negative) this vehicle is.
TimerGameTick::TickCounter | timetable_start
| At what tick of TimerGameTick::counter the vehicle should start its timetable.
TimerGameTick::TickCounter | depot_unbunching_last_departure
| When the vehicle last left its unbunching depot.
TimerGameTick::TickCounter | depot_unbunching_next_departure
| When the vehicle will next try to leave its unbunching depot.
TimerGameTick::Ticks | round_trip_time
| How many ticks for a single circumnavigation of the orders.
uint16_t | service_interval
| The interval for (automatic) servicing; either in days or %.
VehicleOrderID | cur_real_order_index
| The index to the current real (non-implicit) order.
VehicleOrderID | cur_implicit_order_index
| The index to the current implicit order.
uint16_t | vehicle_flags
| Used for gradual loading and other miscellaneous things (. More...

## Protected Member Functions
uint16_t | GetPower () const
| Allows to know the power value that this vehicle will use. More...
uint16_t | GetPoweredPartPower (const Train *head) const
| Returns a value if this articulated part is powered. More...
uint16_t | GetWeight () const
| Allows to know the weight value that this vehicle will use. More...
uint16_t | GetMaxWeight () const override
| Calculates the weight value that this vehicle will have when fully loaded with its current cargo. More...
byte | GetTractiveEffort () const
| Allows to know the tractive effort value that this vehicle will use. More...
byte | GetAirDragArea () const
| Gets the area used for calculating air drag. More...
byte | GetAirDrag () const
| Gets the air drag coefficient of this vehicle. More...
AccelStatus | GetAccelerationStatus () const
| Checks the current acceleration status of this vehicle. More...
uint16_t | GetCurrentSpeed () const
| Calculates the current speed of this vehicle. More...
uint32_t | GetRollingFriction () const
| Returns the rolling friction coefficient of this vehicle. More...
int | GetAccelerationType () const
| Allows to know the acceleration type of a vehicle. More...
uint32_t | GetSlopeSteepness () const
| Returns the slope steepness used by this vehicle. More...
uint16_t | GetMaxTrackSpeed () const
| Gets the maximum speed allowed by the track for this vehicle. More...
int | GetCurveSpeedModifier () const
| Returns the curve speed modifier of this vehicle. More...
bool | TileMayHaveSlopedTrack () const
| Checks if the vehicle is at a tile that can be sloped. More...
bool | HasToUseGetSlopePixelZ ()
| Trains can always use the faster algorithm because they have always the same direction as the track under them. More...
Protected Member Functions inherited from GroundVehicle< Train, VEH_TRAIN >
uint | DoUpdateSpeed (uint accel, int min_speed, int max_speed)
| Update the speed of the vehicle. More...

## Friends
struct | GroundVehicle< Train, VEH_TRAIN >

## Additional Inherited Members
Public Types inherited from GroundVehicle< Train, VEH_TRAIN >
typedef GroundVehicle< Train, Type > | GroundVehicleBase
| Our type.
Public Types inherited from SpecializedVehicle< Train, Type >
typedef SpecializedVehicle< Train, Type > | SpecializedVehicleBase
| Our type.
Public Types inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >
typedef struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > | Pool
| Type of the pool this item is going to be part of.
Static Public Member Functions inherited from SpecializedVehicle< Train, Type >
static bool | IsValidID (size_t index)
| Tests whether given index is a valid index for vehicle of this type. More...
static Train * | Get (size_t index)
| Gets vehicle with given index. More...
static Train * | GetIfValid (size_t index)
| Returns vehicle if the index is a valid index for this vehicle type. More...
static Train * | From (Vehicle *v)
| Converts a Vehicle to SpecializedVehicle with type checking. More...
static const Train * | From (const Vehicle *v)
| Converts a const Vehicle to const SpecializedVehicle with type checking. More...
static Pool::IterateWrapper< Train > | Iterate (size_t from=0)
| Returns an iterable ensemble of all valid vehicles of type T. More...
Static Public Member Functions inherited from Vehicle
static uint | GetAdvanceSpeed (uint speed)
| Determines the effective vehicle movement speed. More...
Static Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >
static bool | CanAllocateItem (size_t n=1)
| Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function() More...
static bool | CleaningPool ()
| Returns current state of pool cleaning - yes or no. More...
static bool | IsValidID (size_t index)
| Tests whether given index can be used to get valid (non-nullptr) Titem. More...
static Titem * | Get (size_t index)
| Returns Titem with given index. More...
static Titem * | GetIfValid (size_t index)
| Returns Titem with given index. More...
static size_t | GetPoolSize ()
| Returns first unused index. More...
static size_t | GetNumItems ()
| Returns number of valid items in the pool. More...
static void | PostDestructor ([[maybe_unused]] size_t index)
| Dummy function called after destructor of each member. More...
static Pool::IterateWrapper< Titem > | Iterate (size_t from=0)
| Returns an iterable ensemble of all valid Titem. More...
Static Public Attributes inherited from SpecializedVehicle< Train, Type >
static const VehicleType | EXPECTED_TYPE
| Specialized type.

## Detailed Description

'Train' is either a loco or a wagon.

Definition at line 89 of file train.h.

## Member Function Documentation

## ◆ CalcNextVehicleOffset()

int Train::CalcNextVehicleOffset | ( |  | ) | const
| inline

Calculate the offset from this vehicle's center to the following center taking the vehicle lengths into account.

Returns
  Offset from center to center.

Definition at line 173 of file train.h.

References GroundVehicleCache::cached_veh_length, GroundVehicle< T, Type >::gcache, GroundVehicle< Train, VEH_TRAIN >::gcache, and SpecializedVehicle< Train, Type >::Next().

Referenced by TicksToLeaveDepot().

## ◆ ConsistChanged()

void Train::ConsistChanged | ( | ConsistChangeFlags | allowed_changes | ) |

Recalculates the cached stuff of a train.

Should be called each time a vehicle is added to/removed from the chain, and when the game is loaded. Note: this needs to be called too for 'wagon chains' (in the depot, without an engine)

Parameters

  allowed_changes | Stuff that is allowed to change.

Definition at line 111 of file train_cmd.cpp.

Referenced by DeleteLastWagon(), NormaliseTrainHead(), TransferCargo(), and VehicleEnterDepot().

## ◆ Crash()

uint Train::Crash | ( | bool | flooded = `false` | ) |
| overridevirtual

The train vehicle crashed! Update its status and other parts around it.

Parameters

  flooded | Crash was caused by flooding.

Returns
  Number of people killed.

Reimplemented from Vehicle.

Definition at line 3107 of file train_cmd.cpp.

References ClearPathReservation(), GroundVehicle< T, Type >::Crash(), crash_anim_pos, Vehicle::fill_percent_te_id, FreeTrainTrackReservation(), GetOtherTunnelBridgeEnd(), GetVehicleTrackdir(), HasBit(), HideFillingPercent(), INVALID_TILE, Vehicle::IsFrontEngine(), IsTileType(), MP_TUNNELBRIDGE, SpecializedVehicle< T, Type >::Next(), SetTunnelBridgeReservation(), Vehicle::tile, TrainApproachingCrossingTile(), UpdateLevelCrossing(), and VRF_TRAIN_STUCK.

Referenced by TrainCrashed().

## ◆ FindClosestDepot()

ClosestDepot Train::FindClosestDepot | ( |  | ) |
| overridevirtual

Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should reverse.

Returns
  A structure with information about the closest depot, if found.

Reimplemented from Vehicle.

Definition at line 2180 of file train_cmd.cpp.

References FindDepotData::best_length, FindClosestTrainDepot(), GetDepotIndex(), FindDepotData::reverse, and FindDepotData::tile.

## ◆ GetAccelerationStatus()

AccelStatus Train::GetAccelerationStatus | ( |  | ) | const
| inlineprotected

Checks the current acceleration status of this vehicle.

Returns
  Acceleration status.

Definition at line 274 of file train.h.

References HasBit(), Vehicle::vehstatus, and VS_STOPPED.

## ◆ GetAccelerationType()

int Train::GetAccelerationType | ( |  | ) | const
| inlineprotected

Allows to know the acceleration type of a vehicle.

Returns
  Acceleration type of the vehicle.

Definition at line 304 of file train.h.

References RailTypeInfo::acceleration_type, and GetRailTypeInfo().

## ◆ GetAirDrag()

byte Train::GetAirDrag | ( |  | ) | const
| inlineprotected

Gets the air drag coefficient of this vehicle.

Returns
  Air drag value from the engine.

Definition at line 265 of file train.h.

## ◆ GetAirDragArea()

byte Train::GetAirDragArea | ( |  | ) | const
| inlineprotected

Gets the area used for calculating air drag.

Returns
  Area of the engine in m^2.

Definition at line 255 of file train.h.

References TRACK_BIT_WORMHOLE, Vehicle::vehstatus, and VS_HIDDEN.

## ◆ GetCurrentMaxSpeed()

int Train::GetCurrentMaxSpeed | ( |  | ) | const
| overridevirtual

Calculates the maximum speed of the vehicle under its current conditions.

Returns
  Maximum speed of the vehicle.

Reimplemented from Vehicle.

Definition at line 382 of file train_cmd.cpp.

References _settings_game, VehicleSettings::train_acceleration_model, and GameSettings::vehicle.

## ◆ GetCurrentSpeed()

uint16_t Train::GetCurrentSpeed | ( |  | ) | const
| inlineprotected

Calculates the current speed of this vehicle.

Returns
  Current speed in km/h-ish.

Definition at line 283 of file train.h.

Referenced by GetRollingFriction().

## ◆ GetCurveSpeedLimit()

int Train::GetCurveSpeedLimit | ( |  | ) | const

Computes train speed limit caused by curves.

Returns
  imposed speed limit

Definition at line 308 of file train_cmd.cpp.

References _settings_game, SpecializedVehicle< Train, Type >::First(), VehicleSettings::train_acceleration_model, and GameSettings::vehicle.

## ◆ GetCurveSpeedModifier()

int Train::GetCurveSpeedModifier | ( |  | ) | const
| inlineprotected

Returns the curve speed modifier of this vehicle.

Returns
  Current curve speed modifier, in fixed-point binary representation with 8 fractional bits.

Definition at line 331 of file train.h.

## ◆ GetDisplayImageWidth()

int Train::GetDisplayImageWidth | ( | Point * | offset = `nullptr` | ) | const

Get the width of a train vehicle image in the GUI.

Parameters

  offset | Additional offset for positioning the sprite; set to nullptr if not needed

Returns
  Width in pixels

Definition at line 460 of file train_cmd.cpp.

Referenced by NewGRFInspectWindow::DrawVehicleChainWidget(), GetLengthOfArticulatedVehicle(), and GetSingleVehicleWidth().

## ◆ GetDisplayMaxSpeed()

int Train::GetDisplayMaxSpeed | ( |  | ) | const
| inlineoverridevirtual

Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing.

Returns
  the vehicle's maximum speed

Reimplemented from Vehicle.

Definition at line 120 of file train.h.

References VehicleCache::cached_max_speed, and Vehicle::vcache.

## ◆ GetDisplaySpeed()

int Train::GetDisplaySpeed | ( |  | ) | const
| inlineoverridevirtual

Gets the speed in km-ish/h that can be sent into SetDParam for string processing.

Returns
  the vehicle's speed

Reimplemented from Vehicle.

Definition at line 119 of file train.h.

References GroundVehicle< Train, VEH_TRAIN >::gcache, and GroundVehicleCache::last_speed.

## ◆ GetImage()

void Train::GetImage | ( | Direction | direction,
|  | EngineImageType | image_type,
|  | VehicleSpriteSeq * | result
| ) |  | const
| override

Get the sprite to display the train.

Parameters

  direction | Direction of view/travel.
  image_type | Visualisation context.

Returns
  Sprite to display.

Definition at line 494 of file train_cmd.cpp.

## ◆ GetMaxTrackSpeed()

uint16_t Train::GetMaxTrackSpeed | ( |  | ) | const
| inlineprotected

Gets the maximum speed allowed by the track for this vehicle.

Returns
  Maximum speed allowed.

Definition at line 322 of file train.h.

## ◆ GetMaxWeight()

uint16_t Train::GetMaxWeight | ( |  | ) | const
| overrideprotectedvirtual

Calculates the weight value that this vehicle will have when fully loaded with its current cargo.

Returns
  Weight value in tonnes.

Reimplemented from Vehicle.

Definition at line 4237 of file train_cmd.cpp.

## ◆ GetNextUnit()

Train* Train::GetNextUnit | ( |  | ) | const
| inline

Get the next real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist.

Returns
  Next vehicle in the consist.

Definition at line 149 of file train.h.

References SpecializedVehicle< Train, Type >::GetNextVehicle(), SpecializedVehicle< T, Type >::GetNextVehicle(), and GroundVehicle< T, Type >::IsRearDualheaded().

Referenced by ArrangeTrains(), CmdAutoreplaceVehicle(), and Vehicle::NeedsServicing().

## ◆ GetOrderStationLocation()

TileIndex Train::GetOrderStationLocation | ( | StationID | station | ) |
| override

Get the location of the next station to visit.

Parameters

  station | Next station to visit.

Returns
  Location of the new station.

Definition at line 2948 of file train_cmd.cpp.

References Vehicle::last_station_visited.

## ◆ GetPower()

uint16_t Train::GetPower | ( |  | ) | const
| inlineprotected

Allows to know the power value that this vehicle will use.

Returns
  Power value from the engine in HP, or zero if the vehicle is not powered.

Definition at line 188 of file train.h.

## ◆ GetPoweredPartPower()

uint16_t Train::GetPoweredPartPower | ( | const Train * | head | ) | const
| inlineprotected

Returns a value if this articulated part is powered.

Returns
  Power value from the articulated part in HP, or zero if it is not powered.

Definition at line 205 of file train.h.

## ◆ GetPrevUnit()

Train* Train::GetPrevUnit | ( |  | ) |
| inline

Get the previous real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist.

Returns
  Previous vehicle in the consist.

Definition at line 161 of file train.h.

References SpecializedVehicle< Train, Type >::GetPrevVehicle(), SpecializedVehicle< T, Type >::GetPrevVehicle(), and GroundVehicle< T, Type >::IsRearDualheaded().

## ◆ GetRollingFriction()

uint32_t Train::GetRollingFriction | ( |  | ) | const
| inlineprotected

Returns the rolling friction coefficient of this vehicle.

Returns
  Rolling friction coefficient in [1e-4].

Definition at line 292 of file train.h.

References GetCurrentSpeed().

## ◆ GetRunningCost()

Money Train::GetRunningCost | ( |  | ) | const
| overridevirtual

Get running cost for the train consist.

Returns
  Yearly running costs.

Reimplemented from Vehicle.

Definition at line 4081 of file train_cmd.cpp.

References Vehicle::GetEngine().

## ◆ GetSlopeSteepness()

uint32_t Train::GetSlopeSteepness | ( |  | ) | const
| inlineprotected

Returns the slope steepness used by this vehicle.

Returns
  Slope steepness used by the vehicle.

Definition at line 313 of file train.h.

References _settings_game, VehicleSettings::train_slope_steepness, and GameSettings::vehicle.

## ◆ GetTractiveEffort()

byte Train::GetTractiveEffort | ( |  | ) | const
| inlineprotected

Allows to know the tractive effort value that this vehicle will use.

Returns
  Tractive effort value from the engine.

Definition at line 246 of file train.h.

## ◆ GetVehicleTrackdir()

Trackdir Train::GetVehicleTrackdir | ( |  | ) | const
| overridevirtual

Get the tracks of the train vehicle.

Returns
  Current tracks of the vehicle.

Reimplemented from Vehicle.

Definition at line 4220 of file train_cmd.cpp.

References DiagDirToDiagTrackdir(), DirToDiagDir(), FindFirstTrack(), GetRailDepotDirection(), INVALID_TRACKDIR, TRACK_BIT_DEPOT, TRACK_BIT_WORMHOLE, TrackDirectionToTrackdir(), Vehicle::vehstatus, and VS_CRASHED.

Referenced by Crash(), FollowTrainReservation(), FreeTrainReservation(), FreeTrainTrackReservation(), NPFTrainFindNearestDepot(), RestoreTrainReservation(), YapfTrainCheckReverse(), and YapfTrainFindNearestDepot().

## ◆ GetWeight()

uint16_t Train::GetWeight | ( |  | ) | const
| inlineprotected

Allows to know the weight value that this vehicle will use.

Returns
  Weight value from the engine in tonnes.

Definition at line 219 of file train.h.

## ◆ HasToUseGetSlopePixelZ()

bool Train::HasToUseGetSlopePixelZ | ( |  | ) |
| inlineprotected

Trains can always use the faster algorithm because they have always the same direction as the track under them.

Returns
  false

Definition at line 351 of file train.h.

## ◆ IsInDepot()

bool Train::IsInDepot | ( |  | ) | const
| inlineoverridevirtual

Check whether the vehicle is in the depot.

Returns
  true if and only if the vehicle is in the depot.

Reimplemented from Vehicle.

Definition at line 124 of file train.h.

References TRACK_BIT_DEPOT.

Referenced by BuildDepotVehicleList().

## ◆ Tick()

bool Train::Tick | ( |  | ) |
| overridevirtual

Update train vehicle data for a tick.

Returns
  True if the vehicle still exists, false if it has ceased to exist (front of consists only).

Reimplemented from Vehicle.

Definition at line 4106 of file train_cmd.cpp.

References Vehicle::cur_speed, BaseConsist::current_order_time, Vehicle::IsFrontEngine(), PFE_GL_TRAINS, Vehicle::running_ticks, Vehicle::tick_counter, Vehicle::vehstatus, and VS_STOPPED.

## ◆ TileMayHaveSlopedTrack()

bool Train::TileMayHaveSlopedTrack | ( |  | ) | const
| inlineprotected

Checks if the vehicle is at a tile that can be sloped.

Returns
  True if the tile can be sloped.

Definition at line 340 of file train.h.

References TRACK_BIT_X, and TRACK_BIT_Y.

## ◆ UpdateSpeed()

int Train::UpdateSpeed | ( |  | ) |

This function looks at the vehicle and updates its speed (cur_speed and subspeed) variables.

Furthermore, it returns the distance that the train can drive this tick. Vehicle::GetAdvanceDistance() determines the distance to drive before moving a step on the map.

Returns
  distance to drive.

Definition at line 2983 of file train_cmd.cpp.

References _settings_game, VehicleSettings::train_acceleration_model, and GameSettings::vehicle.

The documentation for this struct was generated from the following files:

- src/train.h
- src/train_cmd.cpp