OpenTTD
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:
GroundVehicle< Train, VEH_TRAIN > SpecializedVehicle< Train, Type > Vehicle Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool > BaseVehicle BaseConsist

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. More...
 
void MarkDirty ()
 Goods at the consist have changed, update the graphics, cargo, and acceleration. More...
 
void UpdateDeltaXY (Direction direction)
 Updates the x and y offsets and the size of the sprite used for this vehicle. More...
 
ExpensesType GetExpenseType (bool income) const
 Sets the expense type associated to this vehicle type. More...
 
void PlayLeaveStationSound () const
 Play a sound for a train leaving the station. More...
 
bool IsPrimaryVehicle () const
 Whether this is the primary vehicle in the chain.
 
void GetImage (Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const
 Get the sprite to display the train. More...
 
int GetDisplaySpeed () const
 Gets the speed in km-ish/h that can be sent into SetDParam for string processing. More...
 
int GetDisplayMaxSpeed () const
 Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing. More...
 
Money GetRunningCost () const
 Get running cost for the train consist. More...
 
int GetDisplayImageWidth (Point *offset=NULL) const
 Get the width of a train vehicle image in the GUI. More...
 
bool IsInDepot () const
 Check whether the vehicle is in the depot. More...
 
bool Tick ()
 Update train vehicle data for a tick. More...
 
void OnNewDay ()
 Update day counters of the train vehicle. More...
 
uint Crash (bool flooded=false)
 The train vehicle crashed! Update its status and other parts around it. More...
 
Trackdir GetVehicleTrackdir () const
 Get the tracks of the train vehicle. More...
 
TileIndex GetOrderStationLocation (StationID station)
 Get the location of the next station to visit. More...
 
bool FindClosestDepot (TileIndex *location, DestinationID *destination, bool *reverse)
 Locate the closest depot for this consist, and return the information to the caller. More...
 
void ReserveTrackUnderConsist () const
 Tries to reserve track under whole train consist. More...
 
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. More...
 
int GetCurrentMaxSpeed () const
 Calculates the maximum speed of the vehicle under its current conditions. More...
 
TrainGetNextUnit () const
 Get the next real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist. More...
 
TrainGetPrevUnit ()
 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
 Check whether the whole vehicle chain is in the depot. More...
 
uint Crash (bool flooded)
 Common code executed for crashed ground vehicles. More...
 
int64 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.
 
TrainFirst () const
 Get the first vehicle in the chain. More...
 
TrainLast ()
 Get the last vehicle in the chain. More...
 
const TrainLast () const
 Get the last vehicle in the chain. More...
 
TrainNext () const
 Get next vehicle in the chain. More...
 
TrainPrevious () const
 Get previous vehicle in the chain. More...
 
TrainGetNextArticulatedPart ()
 Get the next part of an articulated engine. More...
 
TrainGetNextArticulatedPart () const
 Get the next part of an articulated engine. More...
 
TrainGetFirstEnginePart ()
 Get the first part of an articulated engine. More...
 
const TrainGetFirstEnginePart () const
 Get the first part of an articulated engine. More...
 
TrainGetLastEnginePart ()
 Get the last part of an articulated engine. More...
 
TrainGetNextVehicle () const
 Get the next real (non-articulated part) vehicle in the consist. More...
 
TrainGetPrevVehicle () 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. More...
 
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...
 
GroundVehicleCacheGetGroundVehicleCache ()
 Access the ground vehicle cache of the vehicle. More...
 
const GroundVehicleCacheGetGroundVehicleCache () const
 Access the ground vehicle cache of the vehicle. More...
 
uint16 & GetGroundVehicleFlags ()
 Access the ground vehicle flags of the vehicle. More...
 
const uint16 & GetGroundVehicleFlags () const
 Access the ground vehicle flags of the vehicle. More...
 
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...
 
void GetConsistFreeCapacities (SmallMap< CargoID, uint > &capacities) const
 Get a map of cargoes and free capacities in the consist. More...
 
uint GetConsistTotalCapacity () const
 
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...
 
const EngineGetEngine () const
 Retrieves the engine of the vehicle. More...
 
const GRFFileGetGRF () const
 Retrieve the NewGRF the vehicle is tied to. More...
 
uint32 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...
 
bool IsGroundVehicle () const
 Check if the vehicle is a ground vehicle. More...
 
bool IsStoppedInDepot () const
 Check whether the vehicle is in the depot and stopped. 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...
 
VehicleNext () const
 Get the next vehicle of this vehicle. More...
 
VehiclePrevious () const
 Get the previous vehicle of this vehicle. More...
 
VehicleFirst () const
 Get the first vehicle of this vehicle chain. More...
 
VehicleLast ()
 Get the last vehicle of this vehicle chain. More...
 
const VehicleLast () const
 Get the last vehicle of this vehicle chain. More...
 
VehicleMove (int n)
 Get the vehicle at offset n of this vehicle chain. More...
 
const VehicleMove (int n) const
 Get the vehicle at offset n of this vehicle chain. More...
 
OrderGetFirstOrder () 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.
 
VehicleNextShared () const
 Get the next vehicle of the shared vehicle chain. More...
 
VehiclePreviousShared () const
 Get the previous vehicle of the shared vehicle chain. More...
 
VehicleFirstShared () 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...
 
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 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. 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.
 
OrderGetOrder (int index) const
 Returns order 'index' of a vehicle or NULL when it doesn't exists. More...
 
OrderGetLastOrder () const
 Returns the last order of a vehicle, or NULL 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...
 
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...
 
VehicleGetNextArticulatedPart () const
 Get the next part of an articulated engine. More...
 
VehicleGetFirstEnginePart ()
 Get the first part of an articulated engine. More...
 
const VehicleGetFirstEnginePart () const
 Get the first part of an articulated engine. More...
 
VehicleGetLastEnginePart ()
 Get the last part of an articulated engine. More...
 
VehicleGetNextVehicle () const
 Get the next real (non-articulated part) vehicle in the consist. More...
 
VehicleGetPrevVehicle () const
 Get the previous real (non-articulated part) vehicle in the consist. 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 size, 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...
 

Data Fields

TrainCache tcache
 
Trainother_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. More...
 
- Data Fields inherited from GroundVehicle< Train, VEH_TRAIN >
GroundVehicleCache gcache
 Cache of often calculated values.
 
uint16 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.
 
CargoPaymentcargo_payment
 The cargo payment we're currently in.
 
Rect coord
 NOSAVE: Graphical bounding box of the vehicle, i.e. what to redraw on moves.
 
Vehiclehash_viewport_next
 NOSAVE: Next vehicle in the visual location hash.
 
Vehicle ** hash_viewport_prev
 NOSAVE: Previous vehicle in the visual location hash.
 
Vehiclehash_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.
 
Year build_year
 Year the vehicle has been built.
 
Date age
 Age in days.
 
Date max_age
 Maximum age.
 
Date date_of_last_service
 Last date the vehicle had a service at a depot.
 
uint16 reliability
 Reliability.
 
uint16 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 x_pos
 x coordinate.
 
int32 y_pos
 y coordinate.
 
int32 z_pos
 z coordinate.
 
DirectionByte direction
 facing
 
OwnerByte 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
 
VehicleSpriteSeq sprite_seq
 Vehicle appearance.
 
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 x_bb_offs
 x offset of vehicle bounding box
 
int8 y_bb_offs
 y offset of vehicle bounding box
 
int8 x_offs
 x offset for vehicle sprite
 
int8 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 cur_speed
 current speed
 
byte subspeed
 fractional speed
 
byte acceleration
 used by train & aircraft
 
uint32 motion_counter
 counter to occasionally play a vehicle sound.
 
byte progress
 The percentage (if divided by 256) this vehicle already crossed the tile unit.
 
byte random_bits
 Bits used for determining which randomized variational spritegroups to use when drawing.
 
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.
 
CargoID cargo_type
 type of cargo this vehicle is carrying
 
byte cargo_subtype
 Used for livery refits (NewGRF variations)
 
uint16 cargo_cap
 total capacity
 
uint16 refit_cap
 Capacity left over from before last refit.
 
VehicleCargoList cargo
 The cargo this vehicle is carrying.
 
uint16 cargo_age_counter
 Ticks till cargo is aged next.
 
int8 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 *   list
 Pointer to the order list for this vehicle.
 
   Order *   old
 Only used during conversion of old save games.
 
orders
 The orders currently assigned to the vehicle.
 
uint16 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 #EffectVehicles/#TrainSubTypes/#AircraftSubTypes)
 
NewGRFCache grf_cache
 Cache of often used calculated NewGRF values.
 
VehicleCache vcache
 Cache of often used vehicle values.
 
- 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
VehicleTypeByte type
 Type of vehicle.
 
- Data Fields inherited from BaseConsist
char * name
 Name of vehicle.
 
uint32 current_order_time
 How many ticks have passed since this order started.
 
int32 lateness_counter
 How many ticks late (or early if negative) this vehicle is.
 
Date timetable_start
 When the vehicle is supposed to start the timetable.
 
uint16 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 vehicle_flags
 Used for gradual loading and other miscellaneous things (. More...
 

Protected Member Functions

uint16 GetPower () const
 Allows to know the power value that this vehicle will use. More...
 
uint16 GetPoweredPartPower (const Train *head) const
 Returns a value if this articulated part is powered. More...
 
uint16 GetWeight () const
 Allows to know the weight value that this vehicle will use. 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 GetCurrentSpeed () const
 Calculates the current speed of this vehicle. More...
 
uint32 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 GetSlopeSteepness () const
 Returns the slope steepness used by this vehicle. More...
 
uint16 GetMaxTrackSpeed () const
 Gets the maximum speed allowed by the track for 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.
 
- 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 TrainGet (size_t index)
 Gets vehicle with given index. More...
 
static TrainGetIfValid (size_t index)
 Returns vehicle if the index is a valid index for this vehicle type. More...
 
static TrainFrom (Vehicle *v)
 Converts a Vehicle to SpecializedVehicle with type checking. More...
 
static const TrainFrom (const Vehicle *v)
 Converts a const Vehicle to const SpecializedVehicle with type checking. 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-NULL) 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 (size_t index)
 Dummy function called after destructor of each member. 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 88 of file train.h.

Constructor & Destructor Documentation

◆ ~Train()

virtual Train::~Train ( )
inlinevirtual

We want to 'destruct' the right class.

Definition at line 108 of file train.h.

References Vehicle::direction, Vehicle::MarkDirty(), and Vehicle::UpdateDeltaXY().

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

References GroundVehicleCache::cached_veh_length, GroundVehicle< T, Type >::gcache, and SpecializedVehicle< T, 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_changesStuff that is allowed to change.

Definition at line 129 of file train_cmd.cpp.

Referenced by DeleteLastWagon(), and NormaliseTrainHead().

◆ Crash()

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

◆ FindClosestDepot()

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 2042 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 265 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 295 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 256 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 246 of file train.h.

References TRACK_BIT_WORMHOLE, Vehicle::vehstatus, and VS_HIDDEN.

◆ GetCurrentMaxSpeed()

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, VehicleSettings::train_acceleration_model, and GameSettings::vehicle.

◆ GetCurrentSpeed()

uint16 Train::GetCurrentSpeed ( ) const
inlineprotected

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.

◆ GetCurveSpeedLimit()

int Train::GetCurveSpeedLimit ( ) const

Computes train speed limit caused by curves.

Returns
imposed speed limit

Definition at line 323 of file train_cmd.cpp.

◆ GetDisplayImageWidth()

int Train::GetDisplayImageWidth ( Point offset = NULL) const

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

Parameters
offsetAdditional offset for positioning the sprite; set to NULL if not needed
Returns
Width in pixels

Definition at line 455 of file train_cmd.cpp.

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

◆ GetDisplayMaxSpeed()

int Train::GetDisplayMaxSpeed ( ) const
inlinevirtual

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, Vehicle::GetRunningCost(), and Vehicle::vcache.

◆ GetDisplaySpeed()

int Train::GetDisplaySpeed ( ) const
inlinevirtual

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< T, Type >::gcache, and GroundVehicleCache::last_speed.

◆ GetExpenseType()

ExpensesType Train::GetExpenseType ( bool  income) const
inlinevirtual

Sets the expense type associated to this vehicle type.

Parameters
incomewhether this is income or (running) expenses of the vehicle

Reimplemented from Vehicle.

Definition at line 114 of file train.h.

References EXPENSES_TRAIN_INC, EXPENSES_TRAIN_RUN, and Vehicle::PlayLeaveStationSound().

◆ GetImage()

void Train::GetImage ( Direction  direction,
EngineImageType  image_type,
VehicleSpriteSeq result 
) const
virtual

Get the sprite to display the train.

Parameters
directionDirection of view/travel.
image_typeVisualisation context.
Returns
Sprite to display.

Reimplemented from Vehicle.

Definition at line 485 of file train_cmd.cpp.

References HasBit(), ReverseDir(), Vehicle::spritenum, and VRF_REVERSE_DIRECTION.

◆ GetMaxTrackSpeed()

uint16 Train::GetMaxTrackSpeed ( ) const
inlineprotected

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.

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

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

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

◆ GetOrderStationLocation()

TileIndex Train::GetOrderStationLocation ( StationID  station)
virtual

Get the location of the next station to visit.

Parameters
stationNext station to visit.
Returns
Location of the new station.

Reimplemented from Vehicle.

Definition at line 2786 of file train_cmd.cpp.

References Vehicle::last_station_visited.

◆ GetPower()

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

References GetRailType(), HasPowerOnRail(), Vehicle::IsArticulatedPart(), and Vehicle::tile.

◆ GetPoweredPartPower()

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

References GetRailType(), HasBit(), HasPowerOnRail(), Vehicle::tile, and VRF_POWEREDWAGON.

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

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

◆ GetRollingFriction()

uint32 Train::GetRollingFriction ( ) const
inlineprotected

Returns the rolling friction coefficient of this vehicle.

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

Definition at line 283 of file train.h.

◆ GetRunningCost()

Money Train::GetRunningCost ( ) const
virtual

Get running cost for the train consist.

Returns
Yearly running costs.

Reimplemented from Vehicle.

Definition at line 3899 of file train_cmd.cpp.

References Vehicle::GetEngine().

◆ GetSlopeSteepness()

uint32 Train::GetSlopeSteepness ( ) const
inlineprotected

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.

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

◆ GetVehicleTrackdir()

Trackdir Train::GetVehicleTrackdir ( ) const
virtual

◆ GetWeight()

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

References Vehicle::cargo, Vehicle::cargo_type, FreightWagonMult(), CargoSpec::Get(), Vehicle::IsArticulatedPart(), VehicleCargoList::StoredCount(), and CargoSpec::weight.

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

◆ IsInDepot()

bool Train::IsInDepot ( ) const
inlinevirtual

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 GroundVehicle< T, Type >::Crash(), Vehicle::FindClosestDepot(), Vehicle::GetCurrentMaxSpeed(), Vehicle::GetOrderStationLocation(), Vehicle::GetVehicleTrackdir(), OnNewDay(), Vehicle::Tick(), and TRACK_BIT_DEPOT.

◆ MarkDirty()

void Train::MarkDirty ( )
virtual

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

Reimplemented from Vehicle.

Definition at line 2801 of file train_cmd.cpp.

References Vehicle::colourmap.

◆ OnNewDay()

void Train::OnNewDay ( )
virtual

Update day counters of the train vehicle.

Reimplemented from Vehicle.

Definition at line 3994 of file train_cmd.cpp.

References AgeVehicle(), Vehicle::day_counter, DecreaseVehicleValue(), and Vehicle::IsFrontEngine().

◆ PlayLeaveStationSound()

void Train::PlayLeaveStationSound ( ) const
virtual

Play a sound for a train leaving the station.

Reimplemented from Vehicle.

Definition at line 2055 of file train_cmd.cpp.

◆ ReserveTrackUnderConsist()

void Train::ReserveTrackUnderConsist ( ) const

Tries to reserve track under whole train consist.

Definition at line 2923 of file train_cmd.cpp.

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

Referenced by TrainCrashed().

◆ Tick()

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

References Vehicle::cur_speed, BaseConsist::current_order_time, Vehicle::IsFrontEngine(), 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 322 of file train.h.

References TRACK_BIT_X, and TRACK_BIT_Y.

◆ UpdateAcceleration()

void Train::UpdateAcceleration ( )

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

Definition at line 440 of file train_cmd.cpp.

◆ UpdateDeltaXY()

void Train::UpdateDeltaXY ( Direction  direction)
virtual

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

Parameters
directionthe direction the vehicle is facing

Reimplemented from Vehicle.

Definition at line 1445 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.

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

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

Field Documentation

◆ wait_counter

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 CheckTrainStayInDepot(), and MarkTrainAsStuck().


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