Data Structures | Defines | Typedefs | Enumerations | Functions

train.h File Reference

Base for the train class. More...

#include "newgrf_engine.h"
#include "cargotype.h"
#include "rail.h"
#include "engine_base.h"
#include "rail_map.h"
#include "ground_vehicle.hpp"

Go to the source code of this file.

Data Structures

struct  TrainCache
 Variables that are cached to improve performance and such. More...
struct  FINAL
 Aircraft, helicopters, rotors and their shadows belong to this class. More...

Defines

#define FOR_ALL_TRAINS(var)   FOR_ALL_VEHICLES_OF_TYPE(Train, var)

Typedefs

typedef SimpleTinyEnumT
< TrainForceProceeding, byte > 
TrainForceProceedingByte

Enumerations

enum  VehicleRailFlags {
  VRF_REVERSING = 0, VRF_POWEREDWAGON = 3, VRF_REVERSE_DIRECTION = 4, VRF_EL_ENGINE_ALLOWED_NORMAL_RAIL = 6,
  VRF_TOGGLE_REVERSE = 7, VRF_TRAIN_STUCK = 8, VRF_LEAVING_STATION = 9
}
 

Rail vehicle flags.

More...
enum  TrainForceProceeding { TFP_NONE = 0, TFP_STUCK = 1, TFP_SIGNAL = 2 }
 

Modes for ignoring signals.

More...

Functions

byte FreightWagonMult (CargoID cargo)
 Return the cargo weight multiplier to use for a rail vehicle.
void CheckTrainsLengths ()
 Checks if lengths of all rail vehicles are valid.
void FreeTrainTrackReservation (const Train *v, TileIndex origin=INVALID_TILE, Trackdir orig_td=INVALID_TRACKDIR)
 Free the reserved path in front of a vehicle.
bool TryPathReserve (Train *v, bool mark_as_stuck=false, bool first_tile_okay=false)
 Try to reserve a path to a safe position.
int GetTrainStopLocation (StationID station_id, TileIndex tile, const Train *v, int *station_ahead, int *station_length)
 Get the stop location of (the center) of the front vehicle of a train at a platform of a station.

Detailed Description

Base for the train class.

Definition in file train.h.


Enumeration Type Documentation

Modes for ignoring signals.

Enumerator:
TFP_NONE 

Normal operation.

TFP_STUCK 

Proceed till next signal, but ignore being stuck till then. This includes force leaving depots.

TFP_SIGNAL 

Ignore next signal, after the signal ignore being stucked.

Definition at line 37 of file train.h.

Rail vehicle flags.

Enumerator:
VRF_POWEREDWAGON 

Wagon is powered.

VRF_REVERSE_DIRECTION 

Reverse the visible direction of the vehicle.

VRF_EL_ENGINE_ALLOWED_NORMAL_RAIL 

Electric train engine is allowed to run on normal rail. */.

VRF_TOGGLE_REVERSE 

Used for vehicle var 0xFE bit 8 (toggled each time the train is reversed, accurate for first vehicle only).

VRF_TRAIN_STUCK 

Train can't get a path reservation.

VRF_LEAVING_STATION 

Train is just leaving a station.

Definition at line 25 of file train.h.


Function Documentation

void CheckTrainsLengths (  ) 

Checks if lengths of all rail vehicles are valid.

If not, shows an error message.

Definition at line 86 of file train_cmd.cpp.

References _networking, abs(), CMD_PAUSE, DoCommandP(), Vehicle::first, INVALID_STRING_ID, max(), PM_PAUSED_ERROR, SetDParam(), ShowErrorMessage(), TicksToLeaveDepot(), TRACK_BIT_DEPOT, and WL_CRITICAL.

Referenced by InitializeWindowsAndCaches(), and ReloadNewGRFData().

void FreeTrainTrackReservation ( const Train *  v,
TileIndex  origin,
Trackdir  orig_td 
)

Free the reserved path in front of a vehicle.

Parameters:
v Train owning the reserved path.
origin Tile to start clearing (if INVALID_TILE, use the current tile of v).
orig_td Track direction (if INVALID_TRACKDIR, use the track direction of v).

Definition at line 2194 of file train_cmd.cpp.

References ClearPathReservation(), RailtypeInfo::compatible_railtypes, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::Follow(), GetRailTypeInfo(), GetReservedTrackbits(), GetSignalStateByTrackdir(), GetStationIndex(), HasPbsSignalOnTrackdir(), HasSignalOnTrackdir(), INVALID_TILE, INVALID_TRACKDIR, IsOnewaySignal(), IsRailStationTile(), IsTileType(), IsValidTrackdir(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_is_bridge, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_is_station, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_is_tunnel, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_new_td_bits, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_new_tile, MarkTileDirtyByTile(), MP_RAILWAY, MP_TUNNELBRIDGE, RemoveFirstTrackdir(), ReverseTrackdir(), SetSignalStateByTrackdir(), SIGNAL_STATE_RED, TrackBitsToTrackdirBits(), TRACKDIR_BIT_NONE, TrackdirToTrack(), TracksOverlap(), TrackToTrackBits(), and UnreserveRailTrack().

Referenced by CmdBuildRailStation(), CmdBuildSingleSignal(), CmdConvertRail(), CmdRemoveSingleRail(), DoClearBridge(), DoClearTunnel(), RemoveFromRailBaseStation(), RemoveRailStation(), and ReverseTrainDirection().

byte FreightWagonMult ( CargoID  cargo  ) 

Return the cargo weight multiplier to use for a rail vehicle.

Parameters:
cargo Cargo type to get multiplier for
Returns:
Cargo weight multiplier

Definition at line 79 of file train_cmd.cpp.

References _settings_game, VehicleSettings::freight_trains, CargoSpec::Get(), and GameSettings::vehicle.

Referenced by DrawTrainDetails(), FINAL::GetWeight(), TrainDetailsCapacityTab(), and TrainDetailsCargoTab().

int GetTrainStopLocation ( StationID  station_id,
TileIndex  tile,
const Train *  v,
int *  station_ahead,
int *  station_length 
)

Get the stop location of (the center) of the front vehicle of a train at a platform of a station.

Parameters:
station_id the ID of the station where we're stopping
tile the tile where the vehicle currently is
v the vehicle to get the stop location of
station_ahead 'return' the amount of 1/16th tiles in front of the train
station_length 'return' the station length in 1/16th tiles
Returns:
the location, calculated from the begin of the station to stop at.

Definition at line 257 of file train_cmd.cpp.

References DirToDiagDir(), SpecializedVehicle< T, Type >::Get(), OSL_PLATFORM_FAR_END, OSL_PLATFORM_MIDDLE, OSL_PLATFORM_NEAR_END, and TILE_SIZE.

bool TryPathReserve ( Train *  v,
bool  mark_as_stuck,
bool  first_tile_okay 
)