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, Tcache, Tzero >::PoolItem<&_vehicle_pool > BaseVehicle

Public Types

enum  TrainSubtype {
  TS_FRONT = 0, TS_ARTICULATED_PART = 1, TS_WAGON = 2, TS_ENGINE = 3,
  TS_FREE_WAGON = 4, TS_MULTIHEADED = 5
}
 

enum to handle train subtypes Do not access it directly unless you have to.

More...

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.
const char * GetTypeString () const
 Get a string 'representation' of the vehicle type.
void MarkDirty ()
 Marks the vehicles to be redrawn and updates cached variables.
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 the sound associated with leaving the station.
bool IsPrimaryVehicle () const
 Whether this is the primary vehicle in the chain.
SpriteID GetImage (Direction direction) const
 Gets the sprite to show for the given direction.
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
 Gets the running cost of a vehicle.
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 IsStoppedInDepot () const
 Check whether the vehicle is in the depot *and* stopped.
bool Tick ()
 Calls the tick handler of the vehicle.
void OnNewDay ()
 Calls the new day handler of the vehicle.
uint Crash (bool flooded=false)
 Crash the (whole) vehicle chain.
Trackdir GetVehicleTrackdir () const
 Returns the Trackdir on which the vehicle is currently located.
TileIndex GetOrderStationLocation (StationID station)
 Determine the location for the station where the vehicle goes to next.
bool FindClosestDepot (TileIndex *location, DestinationID *destination, bool *reverse)
 Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should reverse.
void ReserveTrackUnderConsist () const
 Tries to reserve track under whole train consist.
int GetCurveSpeedLimit () const
 Computes train speed limit caused by curves.
void ConsistChanged (bool same_length)
 Recalculates the cached stuff of a train.
void RailtypeChanged ()
 Update visual effect, power and acceleration caches.
int UpdateSpeed ()
 This function looks at the vehicle and updates its speed (cur_speed and subspeed) variables.
void UpdateAcceleration ()
int GetCurrentMaxSpeed () const
 Calculates the maximum speed of the vehicle under its current conditions.
FORCEINLINE void SetFrontEngine ()
 Set front engine state.
FORCEINLINE void ClearFrontEngine ()
 Remove the front engine state.
FORCEINLINE void SetArticulatedPart ()
 Set a vehicle to be an articulated part.
FORCEINLINE void ClearArticulatedPart ()
 Clear a vehicle from being an articulated part.
FORCEINLINE void SetWagon ()
 Set a vehicle to be a wagon.
FORCEINLINE void ClearWagon ()
 Clear wagon property.
FORCEINLINE void SetEngine ()
 Set engine status.
FORCEINLINE void ClearEngine ()
 Clear engine status.
FORCEINLINE void SetFreeWagon ()
 Set if a vehicle is a free wagon.
FORCEINLINE void ClearFreeWagon ()
 Clear a vehicle from being a free wagon.
FORCEINLINE void SetMultiheaded ()
 Set if a vehicle is a multiheaded engine.
FORCEINLINE void ClearMultiheaded ()
 Clear multiheaded engine property.
FORCEINLINE bool IsFrontEngine () const
 Check if train is a front engine.
FORCEINLINE bool IsFreeWagon () const
 Check if train is a free wagon (got no engine in front of it).
FORCEINLINE bool IsEngine () const
 Check if a vehicle is an engine (can be first in a train).
FORCEINLINE bool IsWagon () const
 Check if a train is a wagon.
FORCEINLINE bool IsMultiheaded () const
 Check if train is a multiheaded engine.
FORCEINLINE bool IsRearDualheaded () const
 Tell if we are dealing with the rear end of a multiheaded engine.
FORCEINLINE bool IsArticulatedPart () const
 Check if train is an articulated part of an engine.
FORCEINLINE bool HasArticulatedPart () const
 Check if an engine has an articulated part.
FORCEINLINE TrainGetNextArticPart () const
 Get the next part of a multi-part engine.
FORCEINLINE TrainGetFirstEnginePart ()
 Get the first part of a multi-part engine.
FORCEINLINE const TrainGetFirstEnginePart () const
 Get the first part of a multi-part engine.
FORCEINLINE TrainGetLastEnginePart ()
 Get the last part of a multi-part engine.
FORCEINLINE TrainGetNextVehicle () const
 Get the next real (non-articulated part) vehicle in the consist.
FORCEINLINE TrainGetPrevVehicle () const
 Get the previous real (non-articulated part) vehicle in the consist.
FORCEINLINE TrainGetNextUnit () const
 Get the next real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist.
FORCEINLINE TrainGetPrevUnit ()
 Get the previous real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist.

Data Fields

TrainCache tcache
Trainother_multiheaded_part
uint16 crash_anim_pos
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.

Protected Member Functions

FORCEINLINE uint16 GetPower () const
 Allows to know the power value that this vehicle will use.
FORCEINLINE uint16 GetPoweredPartPower (const Train *head) const
 Returns a value if this articulated part is powered.
FORCEINLINE uint16 GetWeight () const
 Allows to know the weight value that this vehicle will use.
FORCEINLINE byte GetTractiveEffort () const
 Allows to know the tractive effort value that this vehicle will use.
FORCEINLINE byte GetAirDragArea () const
 Gets the area used for calculating air drag.
FORCEINLINE byte GetAirDrag () const
 Gets the air drag coefficient of this vehicle.
FORCEINLINE AccelStatus GetAccelerationStatus () const
 Checks the current acceleration status of this vehicle.
FORCEINLINE uint16 GetCurrentSpeed () const
 Calculates the current speed of this vehicle.
FORCEINLINE uint32 GetRollingFriction () const
 Returns the rolling friction coefficient of this vehicle.
FORCEINLINE int GetAccelerationType () const
 Allows to know the acceleration type of a vehicle.
FORCEINLINE uint32 GetSlopeSteepness () const
 Returns the slope steepness used by this vehicle.
FORCEINLINE uint16 GetMaxTrackSpeed () const
 Gets the maximum speed allowed by the track for this vehicle.
FORCEINLINE bool TileMayHaveSlopedTrack () const
 Checks if the vehicle is at a tile that can be sloped.

Friends

struct GroundVehicle< Train, VEH_TRAIN >

Detailed Description

'Train' is either a loco or a wagon.

Definition at line 82 of file train.h.


Member Enumeration Documentation

enum to handle train subtypes Do not access it directly unless you have to.

Use the access functions below This is an enum to tell what bit to access as it is a bitmask

Enumerator:
TS_FRONT 

Leading engine of a train.

TS_ARTICULATED_PART 

Articulated part of an engine.

TS_WAGON 

Wagon.

TS_ENGINE 

Engine that can be front engine, but might be placed behind another engine.

TS_FREE_WAGON 

First in a wagon chain (in depot).

TS_MULTIHEADED 

Engine is multiheaded.

Definition at line 145 of file train.h.


Constructor & Destructor Documentation

virtual Train::~Train (  )  [inline, virtual]

We want to 'destruct' the right class.

Definition at line 102 of file train.h.

References Vehicle::PreDestructor().


Member Function Documentation

void Train::ConsistChanged ( bool  same_length  ) 

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:
same_length should length of vehicles stay the same?

Definition at line 147 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, GroundVehicle< Train, VEH_TRAIN >::CargoChanged(), CBID_VEHICLE_LENGTH, CBM_VEHICLE_LENGTH, Clamp(), ClrBit(), EF_RAIL_TILTS, GroundVehicle< Train, VEH_TRAIN >::gcache, SpecializedVehicle< Train, Type >::Get(), GetCurveSpeedLimit(), GetRailTypeInfo(), GetVehicleCallback(), GetVehicleCapacity(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_vehicle_pool >::index, Vehicle::InvalidateNewGRFCache(), InvalidateWindowData(), IsFreeWagon(), IsFrontEngine(), RailVehicleInfo::max_speed, min(), RailVehicleInfo::pow_wag_power, RailVehicleInfo::power, RailtypeInfo::powered_railtypes, PROP_TRAIN_SPEED, PROP_TRAIN_USER_DATA, RAILTYPE_RAIL, RAILTYPES_NONE, RAILTYPES_RAIL, RAILVEH_WAGON, RailVehicleLengthChanged(), SetBit(), SetWindowDirty(), RailVehicleInfo::shorten_factor, RailVehicleInfo::user_def_data, UsesWagonOverride(), Vehicle::vcache, VE_DISABLE_WAGON_POWER, GameSettings::vehicle, and VehicleSettings::wagon_speed_limits.

Referenced by AfterLoadVehicles(), CheckCaches(), CmdBuildRailVehicle(), CmdBuildRailWagon(), CmdRefitVehicle(), DeleteLastWagon(), NormaliseTrainHead(), SettingsDisableElrail(), and TransferCargo().

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

Crash the (whole) vehicle chain.

Parameters:
flooded whether the cause of the crash is flooding or not.
Returns:
the number of lost souls.

Reimplemented from Vehicle.

Definition at line 2748 of file train_cmd.cpp.

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

Referenced by TrainCrashed().

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

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

Parameters:
location where do we go to?
destination what hangar do we go to?
reverse should the vehicle be reversed?
Returns:
true if a depot could be found.

Reimplemented from Vehicle.

Definition at line 1877 of file train_cmd.cpp.

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

FORCEINLINE AccelStatus Train::GetAccelerationStatus (  )  const [inline, protected]

Checks the current acceleration status of this vehicle.

Returns:
Acceleration status.

Definition at line 445 of file train.h.

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

Referenced by UpdateSpeed().

FORCEINLINE int Train::GetAccelerationType (  )  const [inline, protected]

Allows to know the acceleration type of a vehicle.

Returns:
Acceleration type of the vehicle.

Definition at line 475 of file train.h.

References RailtypeInfo::acceleration_type, and GetRailTypeInfo().

FORCEINLINE byte Train::GetAirDrag (  )  const [inline, protected]

Gets the air drag coefficient of this vehicle.

Returns:
Air drag value from the engine.

Definition at line 436 of file train.h.

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

References TRACK_BIT_WORMHOLE, Vehicle::vehstatus, and VS_HIDDEN.

int Train::GetCurrentMaxSpeed (  )  const
FORCEINLINE uint16 Train::GetCurrentSpeed (  )  const [inline, protected]

Calculates the current speed of this vehicle.

Returns:
Current speed in km/h-ish.

Definition at line 454 of file train.h.

References Vehicle::cur_speed.

Referenced by GetRollingFriction().

int Train::GetCurveSpeedLimit (  )  const
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 443 of file train_cmd.cpp.

References GroundVehicleCache::cached_veh_length, GroundVehicle< Train, VEH_TRAIN >::gcache, SpecializedVehicle< Train, Type >::Get(), Engine::grf_prop, GRFFilePropsBase< Tcnt >::grffile, GRFFile::traininfo_vehicle_pitch, and GRFFile::traininfo_vehicle_width.

Referenced by DrawTrainDetails(), DrawTrainImage(), GetLengthOfArticulatedVehicle(), GetVehicleWidth(), HighlightDragPosition(), 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 114 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 113 of file train.h.

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

References EXPENSES_TRAIN_INC, and EXPENSES_TRAIN_RUN.

FORCEINLINE const Train* Train::GetFirstEnginePart (  )  const [inline]

Get the first part of a multi-part engine.

Returns:
First part of the engine.

Definition at line 291 of file train.h.

References IsArticulatedPart(), and SpecializedVehicle< T, Type >::Previous().

FORCEINLINE Train* Train::GetFirstEnginePart (  )  [inline]

Get the first part of a multi-part engine.

Returns:
First part of the engine.

Definition at line 280 of file train.h.

References IsArticulatedPart(), and SpecializedVehicle< T, Type >::Previous().

Referenced by CmdMoveRailVehicle(), CmdSellRailWagon(), and GetVehicleSet().

SpriteID Train::GetImage ( Direction  direction  )  const [virtual]

Gets the sprite to show for the given direction.

Parameters:
direction the direction the vehicle is facing
Returns:
the sprite for the given vehicle in the given direction

Reimplemented from Vehicle.

Definition at line 466 of file train_cmd.cpp.

References Vehicle::cargo, Vehicle::cargo_cap, CargoList< Tinst >::Count(), SpecializedVehicle< Train, Type >::Get(), HasBit(), and ReverseDir().

Referenced by DrawTrainDetails().

FORCEINLINE Train* Train::GetLastEnginePart (  )  [inline]

Get the last part of a multi-part engine.

Returns:
Last part of the engine.

Definition at line 302 of file train.h.

References GetNextArticPart(), and HasArticulatedPart().

Referenced by CmdMoveRailVehicle(), RemoveFromConsist(), and TransferCargo().

FORCEINLINE uint16 Train::GetMaxTrackSpeed (  )  const [inline, protected]

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

Returns:
Maximum speed allowed.

Definition at line 493 of file train.h.

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

FORCEINLINE Train* Train::GetNextArticPart (  )  const [inline]

Get the next part of a multi-part engine.

Will only work on a multi-part engine (this->EngineHasArticPart() == true), Result is undefined for normal engine.

Returns:
next part of articulated engine

Definition at line 270 of file train.h.

References HasArticulatedPart(), and SpecializedVehicle< Train, Type >::Next().

Referenced by CheckConsistencyOfArticulatedVehicle(), CmdCloneVehicle(), GetLastEnginePart(), GetNextVehicle(), GetVehicleSet(), and IsArticulatedVehicleCarryingDifferentCargos().

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

References GetNextVehicle(), and IsRearDualheaded().

Referenced by AIVehicle::_MoveWagonInternal(), AIVehicle::_SellWagonInternal(), ArrangeTrains(), CmdAutoreplaceVehicle(), AIVehicle::GetNumWagons(), Vehicle::NeedsServicing(), and ReplaceChain().

FORCEINLINE Train* Train::GetNextVehicle (  )  const [inline]

Get the next real (non-articulated part) vehicle in the consist.

Returns:
Next vehicle in the consist.

Definition at line 313 of file train.h.

References GetNextArticPart(), HasArticulatedPart(), and SpecializedVehicle< T, Type >::Next().

Referenced by ArrangeTrains(), CmdCloneVehicle(), DrawTrainDetails(), GetNextUnit(), GetRunningCost(), GetTrainDetailsWndVScroll(), and NormaliseDualHeads().

TileIndex Train::GetOrderStationLocation ( StationID  station  )  [virtual]

Determine the location for the station where the vehicle goes to next.

Things done for example are allocating slots in a road stop or exact location of the platform is determined for ships.

Parameters:
station the station to make the next location of the vehicle.
Returns:
the location (tile) to aim for.

Reimplemented from Vehicle.

Definition at line 2579 of file train_cmd.cpp.

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

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

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

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

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

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

References GetPrevVehicle(), and IsRearDualheaded().

Referenced by ReplaceChain().

FORCEINLINE Train* Train::GetPrevVehicle (  )  const [inline]

Get the previous real (non-articulated part) vehicle in the consist.

Returns:
Previous vehicle in the consist.

Definition at line 326 of file train.h.

References IsArticulatedPart(), SpecializedVehicle< T, Type >::Previous(), and SpecializedVehicle< Train, Type >::Previous().

Referenced by GetPrevUnit().

FORCEINLINE uint32 Train::GetRollingFriction (  )  const [inline, protected]

Returns the rolling friction coefficient of this vehicle.

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

Definition at line 463 of file train.h.

References GetCurrentSpeed().

Money Train::GetRunningCost (  )  const [virtual]

Gets the running cost of a vehicle.

Returns:
the vehicle's running cost

Reimplemented from Vehicle.

Definition at line 3664 of file train_cmd.cpp.

References SpecializedVehicle< Train, Type >::Get(), GetNextVehicle(), GetPrice(), Engine::grf_prop, GRFFilePropsBase< Tcnt >::grffile, IsMultiheaded(), PROP_TRAIN_RUNNING_COST_FACTOR, and RailVehicleInfo::running_cost.

Referenced by OnNewDay().

FORCEINLINE uint32 Train::GetSlopeSteepness (  )  const [inline, protected]

Returns the slope steepness used by this vehicle.

Returns:
Slope steepness used by the vehicle.

Definition at line 484 of file train.h.

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

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

References PROP_TRAIN_TRACTIVE_EFFORT.

const char* Train::GetTypeString (  )  const [inline, virtual]

Get a string 'representation' of the vehicle type.

Returns:
the string representation.

Reimplemented from Vehicle.

Definition at line 106 of file train.h.

Trackdir Train::GetVehicleTrackdir (  )  const [virtual]

Returns the Trackdir on which the vehicle is currently located.

Works for trains and ships. Currently works only sortof for road vehicles, since they have a fuzzy concept of being "on" a trackdir. Dunno really what it returns for a road vehicle that is halfway a tile, never really understood that part. For road vehicles that are at the beginning or end of the tile, should just return the diagonal trackdir on which they are driving. I _think_. For other vehicles types, or vehicles with no clear trackdir (such as those in depots), returns 0xFF.

Returns:
the trackdir of the vehicle

Reimplemented from Vehicle.

Definition at line 3786 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(), YapfTrainCheckReverse(), and YapfTrainFindNearestDepot().

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

References Vehicle::cargo, Vehicle::cargo_type, CargoList< Tinst >::Count(), GroundVehicleCache::first_engine, FreightWagonMult(), GroundVehicle< Train, VEH_TRAIN >::gcache, SpecializedVehicle< Train, Type >::Get(), HasBit(), IsArticulatedPart(), and PROP_TRAIN_WEIGHT.

FORCEINLINE bool Train::HasArticulatedPart (  )  const [inline]

Check if an engine has an articulated part.

Returns:
True if the engine has an articulated part.

Definition at line 261 of file train.h.

References IsArticulatedPart(), and SpecializedVehicle< Train, Type >::Next().

Referenced by CheckConsistencyOfArticulatedVehicle(), CmdCloneVehicle(), GetLastEnginePart(), GetNextArticPart(), GetNextVehicle(), IsArticulatedVehicleCarryingDifferentCargos(), and DepotWindow::OnRightClick().

FORCEINLINE bool Train::IsArticulatedPart (  )  const [inline]
FORCEINLINE bool Train::IsEngine (  )  const [inline]

Check if a vehicle is an engine (can be first in a train).

Returns:
Returns true if vehicle is an engine

Definition at line 231 of file train.h.

References HasBit(), Vehicle::subtype, and TS_ENGINE.

Referenced by AfterLoadVehicles(), CheckNewTrain(), CheckTrainAttachment(), CmdMoveRailVehicle(), CmdSellRailWagon(), IsRearDualheaded(), NormaliseDualHeads(), NormaliseSubtypes(), and OnNewDay().

FORCEINLINE bool Train::IsFreeWagon (  )  const [inline]

Check if train is a free wagon (got no engine in front of it).

Returns:
Returns true if train is a free wagon

Definition at line 225 of file train.h.

References HasBit(), Vehicle::subtype, and TS_FREE_WAGON.

Referenced by AfterLoadVehicles(), BuildDepotVehicleList(), CmdBuildRailWagon(), ConsistChanged(), DepotWindow::DrawVehicleInDepot(), NormalizeTrainVehInDepot(), Tick(), and UpdateTrainGroupID().

FORCEINLINE bool Train::IsFrontEngine (  )  const [inline]
bool Train::IsInDepot (  )  const [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 744 of file train_cmd.cpp.

References Vehicle::cur_speed, IsRailDepotTile(), SpecializedVehicle< T, Type >::Next(), Vehicle::tile, and TRACK_BIT_DEPOT.

Referenced by CmdForceTrainProceed(), CmdMassStartStopVehicle(), and IsStoppedInDepot().

FORCEINLINE bool Train::IsMultiheaded (  )  const [inline]

Check if train is a multiheaded engine.

Returns:
Returns true if vehicle is a multiheaded engine

Definition at line 243 of file train.h.

References HasBit(), Vehicle::subtype, and TS_MULTIHEADED.

Referenced by ArrangeTrains(), CmdReverseTrainDirection(), GetPower(), GetRunningCost(), IsRearDualheaded(), and NormaliseDualHeads().

FORCEINLINE bool Train::IsRearDualheaded (  )  const [inline]

Tell if we are dealing with the rear end of a multiheaded engine.

Returns:
True if the engine is the rear part of a dualheaded engine.

Definition at line 249 of file train.h.

References IsEngine(), and IsMultiheaded().

Referenced by BuildDepotVehicleList(), CheckTrainAttachment(), CmdAutoreplaceVehicle(), CmdCloneVehicle(), CmdMoveRailVehicle(), CmdSellRailWagon(), GetNewEngineType(), GetNextUnit(), GetPrevUnit(), Vehicle::IsEngineCountable(), and ReplaceFreeUnit().

bool Train::IsStoppedInDepot (  )  const [virtual]

Check whether the vehicle is in the depot *and* stopped.

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

Reimplemented from Vehicle.

Definition at line 757 of file train_cmd.cpp.

References IsFrontEngine(), IsInDepot(), Vehicle::vehstatus, and VS_STOPPED.

Referenced by CmdMoveRailVehicle(), and CmdReverseTrainDirection().

FORCEINLINE bool Train::IsWagon (  )  const [inline]

Check if a train is a wagon.

Returns:
Returns true if vehicle is a wagon

Definition at line 237 of file train.h.

References HasBit(), Vehicle::subtype, and TS_WAGON.

Referenced by NormaliseSubtypes().

void Train::MarkDirty (  )  [virtual]

Marks the vehicles to be redrawn and updates cached variables.

This method marks the area of the vehicle on the screen as dirty. It can be use to repaint the vehicle.

Reimplemented from Vehicle.

Definition at line 2593 of file train_cmd.cpp.

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

void Train::RailtypeChanged (  ) 

Update visual effect, power and acceleration caches.

Called when a vehicle in the consist enters a different railtype.

Definition at line 131 of file train_cmd.cpp.

References IsFrontEngine(), and GroundVehicle< Train, VEH_TRAIN >::PowerChanged().

bool Train::Tick (  )  [virtual]

Calls the tick handler of the vehicle.

Returns:
is this vehicle still valid?

Reimplemented from Vehicle.

Definition at line 3686 of file train_cmd.cpp.

References Vehicle::cur_speed, Vehicle::current_order_time, IsFreeWagon(), IsFrontEngine(), Vehicle::running_ticks, Vehicle::tick_counter, Vehicle::vehstatus, VS_CRASHED, and VS_STOPPED.

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

References TRACK_BIT_X, and TRACK_BIT_Y.

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

References GB(), Vehicle::x_extent, Vehicle::x_offs, Vehicle::y_extent, Vehicle::y_offs, and Vehicle::z_extent.

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

References _settings_game, Vehicle::acceleration, AS_BRAKE, GroundVehicleCache::cached_max_track_speed, Clamp(), Vehicle::cur_speed, GroundVehicle< Train, VEH_TRAIN >::gcache, GroundVehicle< Train, VEH_TRAIN >::GetAcceleration(), GetAccelerationStatus(), Vehicle::GetAdvanceSpeed(), GetCurrentMaxSpeed(), Vehicle::subspeed, VehicleSettings::train_acceleration_model, and GameSettings::vehicle.


Field Documentation

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

Definition at line 97 of file train.h.

Referenced by MarkTrainAsStuck(), and TryPathReserve().


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

Generated on Sun Jan 9 16:03:31 2011 for OpenTTD by  doxygen 1.6.1