OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

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

'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 ()
| Goods at the consist have changed, update the graphics, cargo, and acceleration.
void | UpdateDeltaXY (Direction direction)
| Updates the x and y offsets and the size of the sprite used for this vehicle.
ExpensesType | GetExpenseType (bool income) const
| Sets the expense type associated to this vehicle type.
void | PlayLeaveStationSound () const
| Play a sound for a train leaving the station.
bool | IsPrimaryVehicle () const
| Whether this is the primary vehicle in the chain.
SpriteID | GetImage (Direction direction, EngineImageType image_type) const
| Get the sprite to display the train.
int | GetDisplaySpeed () const
| Gets the speed in km-ish/h that can be sent into SetDParam for string processing.
int | GetDisplayMaxSpeed () const
| Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing.
Money | GetRunningCost () const
| Get running cost for the train consist.
int | GetDisplayImageWidth (Point *offset=NULL) const
| Get the width of a train vehicle image in the GUI.
bool | IsInDepot () const
| Check whether the vehicle is in the depot.
bool | Tick ()
| Update train vehicle data for a tick.
void | OnNewDay ()
| Update day counters of the train vehicle.
uint | Crash (bool flooded=false)
| The train vehicle crashed! Update its status and other parts around it.
Trackdir | GetVehicleTrackdir () const
| Get the tracks of the train vehicle.
TileIndex | GetOrderStationLocation (StationID station)
| Get the location of the next station to visit.
bool | FindClosestDepot (TileIndex *location, DestinationID *destination, bool *reverse)
| Locate the closest depot for this consist, and return the information to the caller.
void | ReserveTrackUnderConsist () const
| Tries to reserve track under whole train consist.
int | GetCurveSpeedLimit () const
| Computes train speed limit caused by curves.
void | ConsistChanged (ConsistChangeFlags allowed_changes)
| Recalculates the cached stuff of a train.
int | UpdateSpeed ()
| This function looks at the vehicle and updates its speed (cur_speed and subspeed) variables.
void | UpdateAcceleration ()
| Update acceleration of the train from the cached power and weight.
int | GetCurrentMaxSpeed () const
| Calculates the maximum speed of the vehicle under its current conditions.
Train * | GetNextUnit () const
| Get the next real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist.
Train * | GetPrevUnit ()
| Get the previous real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist.
int | CalcNextVehicleOffset () const
| Calculate the offset from this vehicle's center to the following center taking the vehicle lengths into account.
Public Member Functions inherited from GroundVehicle< Train, VEH_TRAIN >
| GroundVehicle ()
| The constructor at SpecializedVehicle must be called.
void | PowerChanged ()
void | CargoChanged ()
int | GetAcceleration () const
bool | IsChainInDepot () const
| Check whether the whole vehicle chain is in the depot.
int64 | GetSlopeResistance () const
| Calculates the total slope resistance for this vehicle.
void | UpdateZPositionAndInclination ()
| Updates vehicle's Z position and inclination.
void | UpdateZPosition ()
| Updates vehicle's Z position.
int | UpdateInclination (bool new_tile, bool update_delta)
| Checks if the vehicle is in a slope and sets the required flags in that case.
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).
bool | IsEngine () const
| Check if a vehicle is an engine (can be first in a consist).
bool | IsWagon () const
| Check if a vehicle is a wagon.
bool | IsMultiheaded () const
| Check if the vehicle is a multiheaded engine.
bool | IsRearDualheaded () const
| Tell if we are dealing with the rear end of a multiheaded engine.
void | SetLastSpeed ()
| Update the GUI variant of the current speed of the vehicle.
Public Member Functions inherited from SpecializedVehicle< Train, Type >
| SpecializedVehicle ()
| Set vehicle type correctly.
Train * | First () const
| Get the first vehicle in the chain.
Train * | Last ()
| Get the last vehicle in the chain.
const Train * | Last () const
| Get the last vehicle in the chain.
Train * | Next () const
| Get next vehicle in the chain.
Train * | Previous () const
| Get previous vehicle in the chain.
Train * | GetNextArticulatedPart ()
| Get the next part of an articulated engine.
Train * | GetNextArticulatedPart () const
| Get the next part of an articulated engine.
Train * | GetFirstEnginePart ()
| Get the first part of an articulated engine.
const Train * | GetFirstEnginePart () const
| Get the first part of an articulated engine.
Train * | GetLastEnginePart ()
| Get the last part of an articulated engine.
Train * | GetNextVehicle () const
| Get the next real (non-articulated part) vehicle in the consist.
Train * | GetPrevVehicle () const
| Get the previous real (non-articulated part) vehicle in the consist.
void | UpdateViewport (bool force_update, bool update_delta)
| Update vehicle sprite- and position caches.
Public Member Functions inherited from Vehicle
| Vehicle (VehicleType type=VEH_INVALID)
| Vehicle constructor.
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.
void | CancelReservation (StationID next, Station *st)
| Return all reserved cargo packets to the station and reset all packets staged for transfer.
void | LeaveStation ()
| Perform all actions when leaving a station.
GroundVehicleCache * | GetGroundVehicleCache ()
| Access the ground vehicle cache of the vehicle.
const GroundVehicleCache * | GetGroundVehicleCache () const
| Access the ground vehicle cache of the vehicle.
uint16 & | GetGroundVehicleFlags ()
| Access the ground vehicle flags of the vehicle.
const uint16 & | GetGroundVehicleFlags () const
| Access the ground vehicle flags of the vehicle.
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.
void | GetConsistFreeCapacities (SmallMap< CargoID, uint > &capacities) const
| Get a map of cargoes and free capacities in the consist.
uint | GetConsistTotalCapacity () const
uint | GetOldAdvanceSpeed (uint speed)
| Determines the effective direction-specific vehicle movement speed.
uint | GetAdvanceDistance ()
| Determines the vehicle "progress" needed for moving a step.
const Engine * | GetEngine () const
| Retrieves the engine of the vehicle.
const GRFFile * | GetGRF () const
| Retrieve the NewGRF the vehicle is tied to.
uint32 | GetGRFID () const
| Retrieve the GRF ID of the NewGRF the vehicle is tied to.
void | InvalidateNewGRFCache ()
| Invalidates cached NewGRF variables.
void | InvalidateNewGRFCacheOfChain ()
| Invalidates cached NewGRF variables of all vehicles in the chain (after the current vehicle)
bool | IsGroundVehicle () const
| Check if the vehicle is a ground vehicle.
bool | IsStoppedInDepot () const
| Check whether the vehicle is in the depot and stopped.
Money | GetDisplayRunningCost () const
| Gets the running cost of a vehicle that can be sent into SetDParam for string processing.
Money | GetDisplayProfitThisYear () const
| Gets the profit vehicle had this year.
Money | GetDisplayProfitLastYear () const
| Gets the profit vehicle had last year.
void | SetNext (Vehicle *next)
| Set the next vehicle of this vehicle.
Vehicle * | Move (int n)
| Get the vehicle at offset n of this vehicle chain.
const Vehicle * | Move (int n) const
| Get the vehicle at offset n of this vehicle chain.
Order * | GetFirstOrder () const
| Get the first order of the vehicles order list.
void | AddToShared (Vehicle *shared_chain)
| Adds this vehicle to a shared vehicle chain.
void | RemoveFromShared ()
| Removes the vehicle from the shared order list.
Vehicle * | NextShared () const
| Get the next vehicle of the shared vehicle chain.
Vehicle * | PreviousShared () const
| Get the previous vehicle of the shared vehicle chain.
Vehicle * | FirstShared () const
| Get the first vehicle of this vehicle chain.
bool | IsOrderListShared () const
| Check if we share our orders with another vehicle.
VehicleOrderID | GetNumOrders () const
| Get the number of orders this vehicle has.
VehicleOrderID | GetNumManualOrders () const
| Get the number of manually added orders this vehicle has.
StationIDStack | GetNextStoppingStation () const
| Get the next station the vehicle will stop at.
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.
bool | HandleBreakdown ()
| Handle all of the aspects of a vehicle breakdown This includes adding smoke and sounds, and ending the breakdown when appropriate.
bool | NeedsAutorenewing (const Company *c, bool use_renew_setting=true) const
| Function to tell if a vehicle needs to be autorenewed.
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.
bool | NeedsAutomaticServicing () const
| Checks if the current order should be interrupted for a service-in-depot order.
CommandCost | SendToDepot (DoCommandFlag flags, DepotCommand command)
| Send this vehicle to the depot using the given command(s).
void | UpdateVisualEffect (bool allow_power_change=true)
| Update the cached visual effect.
void | ShowVisualEffect () const
| Draw visual effects (smoke and/or sparks) for a vehicle chain.
void | UpdatePosition ()
| Update the position of the vehicle.
void | UpdateViewport (bool dirty)
| Update the vehicle on the viewport, updating the right hash and setting the new coordinates.
void | UpdatePositionAndViewport ()
| Update the position of the vehicle, and update the viewport.
void | MarkAllViewportsDirty () const
| Marks viewports dirty where the vehicle's image is.
uint16 | GetServiceInterval () const
void | SetServiceInterval (uint16 interval)
bool | ServiceIntervalIsCustom () const
bool | ServiceIntervalIsPercent () const
void | SetServiceIntervalIsCustom (bool on)
void | SetServiceIntervalIsPercent (bool on)
void | IncrementImplicitOrderIndex ()
| Increments cur_implicit_order_index, keeps care of the wrap-around and invalidates the GUI.
void | IncrementRealOrderIndex ()
| Advanced cur_real_order_index to the next real order, keeps care of the wrap-around and invalidates the GUI.
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 NULL when it doesn't exists.
Order * | GetLastOrder () const
| Returns the last order of a vehicle, or NULL if it doesn't exists.
bool | IsEngineCountable () const
| Check if a vehicle is counted in num_engines in each company struct.
bool | HasEngineType () const
| Check whether Vehicle::engine_type has any meaning.
bool | HasDepotOrder () const
| Checks if a vehicle has a depot in its order list.
void | HandlePathfindingResult (bool path_found)
| Handle the pathfinding result, especially the lost status.
bool | IsFrontEngine () const
| Check if the vehicle is a front engine.
bool | IsArticulatedPart () const
| Check if the vehicle is an articulated part of an engine.
bool | HasArticulatedPart () const
| Check if an engine has an articulated part.
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.
void * | operator new (size_t size, size_t index)
| Allocates space for new Titem with given index.
void * | operator new (size_t size, void *ptr)
| Allocates space for new Titem at given memory address.
void | operator delete (void *p)
| Marks Titem as free.
Public Member Functions inherited from BaseConsist
void | CopyConsistPropertiesFrom (const BaseConsist *src)
| Copy properties of other BaseConsist.

## Data Fields
TrainCache | tcache
Train * | other_multiheaded_part
uint16 | crash_anim_pos
| Crash animation counter.
uint16 | flags
TrackBitsByte | track
TrainForceProceedingByte | force_proceed
RailTypeByte | railtype
RailTypes | compatible_railtypes
uint16 | 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 | gv_flags

## Protected Member Functions
uint16 | GetPower () const
| Allows to know the power value that this vehicle will use.
uint16 | GetPoweredPartPower (const Train *head) const
| Returns a value if this articulated part is powered.
uint16 | GetWeight () const
| Allows to know the weight value that this vehicle will use.
byte | GetTractiveEffort () const
| Allows to know the tractive effort value that this vehicle will use.
byte | GetAirDragArea () const
| Gets the area used for calculating air drag.
byte | GetAirDrag () const
| Gets the air drag coefficient of this vehicle.
AccelStatus | GetAccelerationStatus () const
| Checks the current acceleration status of this vehicle.
uint16 | GetCurrentSpeed () const
| Calculates the current speed of this vehicle.
uint32 | GetRollingFriction () const
| Returns the rolling friction coefficient of this vehicle.
int | GetAccelerationType () const
| Allows to know the acceleration type of a vehicle.
uint32 | GetSlopeSteepness () const
| Returns the slope steepness used by this vehicle.
uint16 | GetMaxTrackSpeed () const
| Gets the maximum speed allowed by the track for this vehicle.
bool | TileMayHaveSlopedTrack () const
| Checks if the vehicle is at a tile that can be sloped.
bool | HasToUseGetSlopePixelZ ()
| Trains can always use the faster algorithm because they have always the same direction as the track under them.
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.

## Friends
struct | GroundVehicle< Train, VEH_TRAIN >

## Additional Inherited Members
Public Types inherited from GroundVehicle< Train, VEH_TRAIN >
typedef GroundVehicle< Train, Type > | GroundVehicleBase
| Our type.
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.
static Train * | Get (size_t index)
| Gets vehicle with given index.
static Train * | GetIfValid (size_t index)
| Returns vehicle if the index is a valid index for this vehicle type.
static Train * | From (Vehicle *v)
| Converts a Vehicle to SpecializedVehicle with type checking.
static const Train * | From (const Vehicle *v)
| Converts a const Vehicle to const SpecializedVehicle with type checking.
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 88 of file train.h.

## Constructor & Destructor Documentation

virtual Train::~Train | ( |  | ) |
| inline virtual

We want to 'destruct' the right class.

Definition at line 108 of file train.h.

References Vehicle::PreDestructor().

## Member Function Documentation

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 170 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 AdvanceWagonsAfterSwap(), AdvanceWagonsBeforeSwap(), TicksToLeaveDepot(), and VehicleEnter_Track().

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 129 of file train_cmd.cpp.

References _settings_game, TrainCache::cached_max_curve_speed, VehicleCache::cached_max_speed, TrainCache::cached_tilt, GroundVehicleCache::cached_total_length, CALLBACK_FAILED, EngineInfo::callback_mask, EngineInfo::cargo_age_period, GroundVehicle< Train, VEH_TRAIN >::CargoChanged(), CBID_VEHICLE_LENGTH, CBM_VEHICLE_LENGTH, CCF_CAPACITY, CCF_LENGTH, Clamp(), ClrBit(), Engine::DetermineCapacity(), EF_RAIL_TILTS, Vehicle::engine_type, ErrorUnknownCallbackResult(), GBUG_VEH_CAPACITY, GroundVehicle< Train, VEH_TRAIN >::gcache, GetCurveSpeedLimit(), Engine::GetGRF(), Engine::GetGRFID(), GetRailTypeInfo(), GetVehicleCallback(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::index, INVALID_ENGINE, Vehicle::InvalidateNewGRFCache(), InvalidateNewGRFInspectWindow(), InvalidateWindowData(), GroundVehicle< Train, VEH_TRAIN >::IsFreeWagon(), Vehicle::IsFrontEngine(), RailVehicleInfo::max_speed, min(), EngineInfo::misc_flags, SpecializedVehicle< T, Type >::Next(), RailVehicleInfo::pow_wag_power, RailVehicleInfo::power, RailtypeInfo::powered_railtypes, PROP_TRAIN_CARGO_AGE_PERIOD, PROP_TRAIN_SHORTEN_FACTOR, PROP_TRAIN_SPEED, PROP_TRAIN_USER_DATA, RAILTYPE_RAIL, RAILTYPES_NONE, RAILTYPES_RAIL, RAILVEH_WAGON, SetBit(), SetWindowDirty(), RailVehicleInfo::shorten_factor, ShowNewGrfVehicleError(), UpdateAcceleration(), RailVehicleInfo::user_def_data, UsesWagonOverride(), Vehicle::vcache, VE_DISABLE_WAGON_POWER, GameSettings::vehicle, VEHICLE_LENGTH, VehicleLengthChanged(), VIWD_CONSIST_CHANGED, VRF_EL_ENGINE_ALLOWED_NORMAL_RAIL, VRF_POWEREDWAGON, VehicleSettings::wagon_speed_limits, WC_VEHICLE_DETAILS, WC_VEHICLE_ORDERS, and WC_VEHICLE_REFIT.

Referenced by AfterLoadGame(), AfterLoadVehicles(), CheckCaches(), CmdBuildRailVehicle(), CmdBuildRailWagon(), CmdRefitVehicle(), CmdReverseTrainDirection(), DeleteLastWagon(), FixupTrainLengths(), NormaliseTrainHead(), ReverseTrainDirection(), SettingsDisableElrail(), TransferCargo(), and VehicleEnterDepot().

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

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 GroundVehicle< Train, VEH_TRAIN >.

Definition at line 2937 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().

bool Train::FindClosestDepot | ( | TileIndex * | location,
|  | DestinationID * | destination,
|  | bool * | reverse
| ) |  |
| virtual

Locate the closest depot for this consist, and return the information to the caller.

Parameters

  location | [out] If not `NULL` and a depot is found, store its location in the given address.
  destination | [out] If not `NULL` and a depot is found, store its index in the given address.
  reverse | [out] If not `NULL` and a depot is found, store reversal information in the given address.

Returns
  A depot has been found.

Reimplemented from Vehicle.

Definition at line 2033 of file train_cmd.cpp.

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

AccelStatus Train::GetAccelerationStatus | ( |  | ) | const
| inline protected

Checks the current acceleration status of this vehicle.

Returns
  Acceleration status.

Definition at line 265 of file train.h.

References AS_ACCEL, AS_BRAKE, HasBit(), Vehicle::vehstatus, VRF_TRAIN_STUCK, and VS_STOPPED.

Referenced by UpdateSpeed().

int Train::GetAccelerationType | ( |  | ) | const
| inline protected

Allows to know the acceleration type of a vehicle.

Returns
  Acceleration type of the vehicle.

Definition at line 295 of file train.h.

References RailtypeInfo::acceleration_type, and GetRailTypeInfo().

byte Train::GetAirDrag | ( |  | ) | const
| inline protected

Gets the air drag coefficient of this vehicle.

Returns
  Air drag value from the engine.

Definition at line 256 of file train.h.

References Vehicle::engine_type.

byte Train::GetAirDragArea | ( |  | ) | const
| inline protected

Gets the area used for calculating air drag.

Returns
  Area of the engine in m^2.

Definition at line 246 of file train.h.

References TRACK_BIT_WORMHOLE, Vehicle::vehstatus, and VS_HIDDEN.

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

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

Returns
  Maximum speed of the vehicle.

Reimplemented from Vehicle.

Definition at line 392 of file train_cmd.cpp.

References _settings_game, TrainCache::cached_max_curve_speed, GroundVehicleCache::cached_max_track_speed, Vehicle::cur_speed, Vehicle::current_order, GroundVehicle< Train, VEH_TRAIN >::gcache, GetBridgeSpec(), GetBridgeType(), Order::GetMaxSpeed(), GetStationIndex(), GetTrainStopLocation(), IsRailStationTile(), max(), min(), SpecializedVehicle< T, Type >::Next(), Order::ShouldStopAtStation(), BridgeSpec::speed, Vehicle::tile, TILE_SIZE, TRACK_BIT_DEPOT, TRACK_BIT_WORMHOLE, VehicleSettings::train_acceleration_model, GameSettings::vehicle, and VS_HIDDEN.

Referenced by UpdateSpeed().

uint16 Train::GetCurrentSpeed | ( |  | ) | const
| inline protected

Calculates the current speed of this vehicle.

Returns
  Current speed in km/h-ish.

Definition at line 274 of file train.h.

References Vehicle::cur_speed.

Referenced by GetRollingFriction().

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

Computes train speed limit caused by curves.

Returns
  imposed speed limit

Definition at line 323 of file train_cmd.cpp.

References _settings_game, TrainCache::cached_tilt, Clamp(), RailtypeInfo::curve_speed, DIRDIFF_45LEFT, DIRDIFF_45RIGHT, DIRDIFF_90LEFT, DIRDIFF_90RIGHT, DIRDIFF_SAME, DirDifference(), SpecializedVehicle< Train, Type >::First(), GetRailTypeInfo(), Vehicle::Next(), VehicleSettings::train_acceleration_model, and GameSettings::vehicle.

Referenced by ConsistChanged(), and TrainController().

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

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

Parameters

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

Returns
  Width in pixels

Definition at line 455 of file train_cmd.cpp.

References GroundVehicleCache::cached_veh_length, GroundVehicle< Train, VEH_TRAIN >::gcache, Vehicle::GetEngine(), Engine::GetGRF(), ScaleGUITrad(), GRFFile::traininfo_vehicle_pitch, GRFFile::traininfo_vehicle_width, and VEHICLE_LENGTH.

Referenced by DrawTrainDetails(), DrawTrainImage(), GetLengthOfArticulatedVehicle(), GetSingleVehicleWidth(), and DepotWindow::OnPaint().

int Train::GetDisplayMaxSpeed | ( |  | ) | const
| inline virtual

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 119 of file train.h.

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

Referenced by CYapfCostRailT< Types >::PfCalcCost().

int Train::GetDisplaySpeed | ( |  | ) | const
| inline virtual

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 118 of file train.h.

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

ExpensesType Train::GetExpenseType | ( | bool | income | ) | const
| inline virtual

Sets the expense type associated to this vehicle type.

Parameters

  income | whether this is income or (running) expenses of the vehicle

Reimplemented from Vehicle.

Definition at line 114 of file train.h.

References EXPENSES_TRAIN_INC, and EXPENSES_TRAIN_RUN.

SpriteID Train::GetImage | ( | Direction | direction,
|  | EngineImageType | image_type
| ) |  | const
| virtual

Get the sprite to display the train.

Parameters

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

Returns
  Sprite to display.

Reimplemented from Vehicle.

Definition at line 485 of file train_cmd.cpp.

References Vehicle::cargo, Vehicle::cargo_cap, Vehicle::GetEngine(), HasBit(), Engine::original_image_index, ReverseDir(), Vehicle::spritenum, VehicleCargoList::StoredCount(), and VRF_REVERSE_DIRECTION.

Referenced by ChangeTrainDirRandomly(), and DrawTrainDetails().

uint16 Train::GetMaxTrackSpeed | ( |  | ) | const
| inline protected

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

Returns
  Maximum speed allowed.

Definition at line 313 of file train.h.

References GetRailType(), GetRailTypeInfo(), RailtypeInfo::max_speed, and Vehicle::tile.

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 146 of file train.h.

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

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

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

Get the location of the next station to visit.

Parameters

  station | Next station to visit.

Returns
  Location of the new station.

Reimplemented from Vehicle.

Definition at line 2778 of file train_cmd.cpp.

References FACIL_TRAIN, BaseStation::facilities, SpecializedVehicle< Train, Type >::Get(), Vehicle::IncrementRealOrderIndex(), Vehicle::last_station_visited, and BaseStation::xy.

uint16 Train::GetPower | ( |  | ) | const
| inline protected

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 185 of file train.h.

References Vehicle::engine_type, GetRailType(), HasPowerOnRail(), Vehicle::IsArticulatedPart(), GroundVehicle< Train, VEH_TRAIN >::IsMultiheaded(), PROP_TRAIN_POWER, and Vehicle::tile.

uint16 Train::GetPoweredPartPower | ( | const Train * | head | ) | const
| inline protected

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 202 of file train.h.

References GroundVehicleCache::first_engine, GroundVehicle< Train, VEH_TRAIN >::gcache, GetRailType(), HasBit(), HasPowerOnRail(), Vehicle::tile, and VRF_POWEREDWAGON.

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 158 of file train.h.

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

Referenced by ReplaceChain().

uint32 Train::GetRollingFriction | ( |  | ) | const
| inline protected

Returns the rolling friction coefficient of this vehicle.

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

Definition at line 283 of file train.h.

References GetCurrentSpeed().

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

Get running cost for the train consist.

Returns
  Yearly running costs.

Reimplemented from Vehicle.

Definition at line 3891 of file train_cmd.cpp.

References Vehicle::GetEngine(), Engine::GetGRF(), SpecializedVehicle< T, Type >::GetNextVehicle(), GetPrice(), GroundVehicle< T, Type >::IsMultiheaded(), PROP_TRAIN_RUNNING_COST_FACTOR, and RailVehicleInfo::running_cost.

Referenced by OnNewDay().

uint32 Train::GetSlopeSteepness | ( |  | ) | const
| inline protected

Returns the slope steepness used by this vehicle.

Returns
  Slope steepness used by the vehicle.

Definition at line 304 of file train.h.

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

byte Train::GetTractiveEffort | ( |  | ) | const
| inline protected

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

Returns
  Tractive effort value from the engine.

Definition at line 237 of file train.h.

References Vehicle::engine_type, and PROP_TRAIN_TRACTIVE_EFFORT.

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

Get the tracks of the train vehicle.

Returns
  Current tracks of the vehicle.

Reimplemented from Vehicle.

Definition at line 4024 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 CheckNextTrainTile(), CmdBuildRailStation(), CmdBuildSingleSignal(), Crash(), FollowTrainReservation(), FreeTrainTrackReservation(), NPFTrainCheckReverse(), NPFTrainFindNearestDepot(), RemoveFromRailBaseStation(), ReverseTrainDirection(), YapfTrainCheckReverse(), and YapfTrainFindNearestDepot().

uint16 Train::GetWeight | ( |  | ) | const
| inline protected

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

Returns
  Weight value from the engine in tonnes.

Definition at line 216 of file train.h.

References Vehicle::cargo, Vehicle::cargo_type, Vehicle::engine_type, GroundVehicleCache::first_engine, FreightWagonMult(), GroundVehicle< Train, VEH_TRAIN >::gcache, SpecializedVehicle< Train, Type >::Get(), HasBit(), Vehicle::IsArticulatedPart(), PROP_TRAIN_WEIGHT, VehicleCargoList::StoredCount(), and VRF_POWEREDWAGON.

bool Train::HasToUseGetSlopePixelZ | ( |  | ) |
| inline protected

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

Returns
  false

Definition at line 333 of file train.h.

bool Train::IsInDepot | ( |  | ) | const
| inline virtual

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 122 of file train.h.

References TRACK_BIT_DEPOT.

void Train::MarkDirty | ( |  | ) |
| virtual

Goods at the consist have changed, update the graphics, cargo, and acceleration.

Reimplemented from Vehicle.

Definition at line 2793 of file train_cmd.cpp.

References GroundVehicle< Train, VEH_TRAIN >::CargoChanged(), Vehicle::colourmap, SpecializedVehicle< T, Type >::Next(), UpdateAcceleration(), and SpecializedVehicle< T, Type >::UpdateViewport().

Referenced by CmdMoveRailVehicle().

void Train::OnNewDay | ( |  | ) |
| virtual

Update day counters of the train vehicle.

Reimplemented from Vehicle.

Definition at line 3986 of file train_cmd.cpp.

References AgeVehicle(), CheckIfTrainNeedsService(), CheckOrders(), Vehicle::current_order, Vehicle::day_counter, DAY_TICKS, DAYS_IN_YEAR, DecreaseVehicleValue(), Vehicle::dest_tile, EXPENSES_TRAIN_RUN, SpecializedVehicle< Train, Type >::Get(), CommandCost::GetCost(), Order::GetDestination(), GetRunningCost(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::index, INVALID_TILE, Vehicle::IsFrontEngine(), Order::IsType(), Vehicle::owner, Vehicle::profit_this_year, Vehicle::running_ticks, SetWindowClassesDirty(), SetWindowDirty(), SubtractMoneyFromCompanyFract(), Vehicle::tile, WC_TRAINS_LIST, and WC_VEHICLE_DETAILS.

void Train::PlayLeaveStationSound | ( |  | ) | const
| virtual

Play a sound for a train leaving the station.

Reimplemented from Vehicle.

Definition at line 2046 of file train_cmd.cpp.

References Vehicle::engine_type, PlayVehicleSound(), and VSE_START.

Referenced by CheckTrainStayInDepot().

void Train::ReserveTrackUnderConsist | ( |  | ) | const

Tries to reserve track under whole train consist.

Definition at line 2915 of file train_cmd.cpp.

References DiagDirToDiagTrack(), GetTunnelBridgeDirection(), SpecializedVehicle< T, Type >::Next(), Vehicle::tile, TRACK_BIT_DEPOT, TRACK_BIT_WORMHOLE, TrackBitsToTrack(), and TryReserveRailTrack().

Referenced by AfterLoadGame(), and TrainCrashed().

bool Train::Tick | ( |  | ) |
| virtual

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 3916 of file train_cmd.cpp.

References crash_anim_pos, Vehicle::cur_speed, BaseConsist::current_order_time, GroundVehicle< Train, VEH_TRAIN >::IsFreeWagon(), Vehicle::IsFrontEngine(), Vehicle::running_ticks, Vehicle::tick_counter, Vehicle::vehstatus, VS_CRASHED, and VS_STOPPED.

bool Train::TileMayHaveSlopedTrack | ( |  | ) | const
| inline protected

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

Returns
  True if the tile can be sloped.

Definition at line 322 of file train.h.

References TRACK_BIT_X, and TRACK_BIT_Y.

void Train::UpdateAcceleration | ( |  | ) |

Update acceleration of the train from the cached power and weight.

Definition at line 440 of file train_cmd.cpp.

References Vehicle::acceleration, GroundVehicleCache::cached_power, GroundVehicleCache::cached_weight, Clamp(), GroundVehicle< Train, VEH_TRAIN >::gcache, GroundVehicle< Train, VEH_TRAIN >::IsFreeWagon(), and Vehicle::IsFrontEngine().

Referenced by CheckTrainStayInDepot(), ConsistChanged(), and MarkDirty().

void Train::UpdateDeltaXY | ( | Direction | direction | ) |
| virtual

Updates the x and y offsets and the size of the sprite used for this vehicle.

Parameters

  direction | the direction the vehicle is facing

Reimplemented from Vehicle.

Definition at line 1436 of file train_cmd.cpp.

References GroundVehicleCache::cached_veh_length, DIR_NE, DIR_NW, DIR_SE, DIR_SW, Vehicle::direction, GroundVehicle< Train, VEH_TRAIN >::gcache, IsDiagonalDirection(), VEHICLE_LENGTH, Vehicle::x_bb_offs, Vehicle::x_extent, Vehicle::x_offs, Vehicle::y_bb_offs, Vehicle::y_extent, Vehicle::y_offs, and Vehicle::z_extent.

Referenced by ChangeTrainDirRandomly().

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 2813 of file train_cmd.cpp.

References _settings_game, Vehicle::acceleration, AS_BRAKE, GroundVehicle< Train, VEH_TRAIN >::DoUpdateSpeed(), GroundVehicle< Train, VEH_TRAIN >::GetAcceleration(), GetAccelerationStatus(), GetCurrentMaxSpeed(), VehicleSettings::train_acceleration_model, and GameSettings::vehicle.

## Field Documentation

uint16 Train::wait_counter

Ticks waiting in front of a signal, ticks being stuck or a counter for forced proceeding through signals.

Definition at line 103 of file train.h.

Referenced by AfterLoadGame(), CheckTrainStayInDepot(), MarkTrainAsStuck(), ReverseTrainDirection(), TryPathReserve(), and VehicleEnterDepot().

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

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