OpenTTD: CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks > Struct Template Reference

OpenTTD

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

- Data Structures
- Class Hierarchy
- Data Fields

Public Types | Public Member Functions | Static Public Member Functions | Data Fields | Protected Member Functions
CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks > Struct Template Reference

Track follower helper template class (can serve pathfinders and vehicle controllers). More...

`#include <follow_track.hpp>`

## Public Types
enum | ErrorCode { EC_NONE, EC_OWNER, EC_RAIL_TYPE, EC_90DEG, EC_NO_WAY, EC_RESERVED }

## Public Member Functions
| CFollowTrackT (const VehicleType *v=NULL, RailTypes railtype_override=INVALID_RAILTYPES, CPerformanceTimer *pPerf=NULL)
| CFollowTrackT (Owner o, RailTypes railtype_override=INVALID_RAILTYPES, CPerformanceTimer *pPerf=NULL)
void | Init (const VehicleType *v, RailTypes railtype_override, CPerformanceTimer *pPerf)
void | Init (Owner o, RailTypes railtype_override, CPerformanceTimer *pPerf)
bool | IsTram ()
DiagDirection | GetSingleTramBit (TileIndex tile)
| Tests if a tile is a road tile with a single tramtrack (tram can reverse)
bool | Follow (TileIndex old_tile, Trackdir old_td)
| main follower routine.
bool | MaskReservedTracks ()
int | GetSpeedLimit (int *pmin_speed=NULL) const
| Helper for pathfinders - get min/max speed on the m_old_tile/m_old_td.

## Static Public Member Functions
static TransportType | TT ()
static bool | IsWaterTT ()
static bool | IsRailTT ()
static bool | IsRoadTT ()
static bool | Allow90degTurns ()
static bool | DoTrackMasking ()

## Data Fields
const VehicleType * | m_veh
| moving vehicle
Owner | m_veh_owner
| owner of the vehicle
TileIndex | m_old_tile
| the origin (vehicle moved from) before move
Trackdir | m_old_td
| the trackdir (the vehicle was on) before move
TileIndex | m_new_tile
| the new tile (the vehicle has entered)
TrackdirBits | m_new_td_bits
| the new set of available trackdirs
DiagDirection | m_exitdir
| exit direction (leaving the old tile)
bool | m_is_tunnel
| last turn passed tunnel
bool | m_is_bridge
| last turn passed bridge ramp
bool | m_is_station
| last turn passed station
int | m_tiles_skipped
| number of skipped tunnel or station tiles
ErrorCode | m_err
CPerformanceTimer * | m_pPerf
RailTypes | m_railtypes

## Protected Member Functions
void | FollowTileExit ()
| Follow the m_exitdir from m_old_tile and fill m_new_tile and m_tiles_skipped.
bool | QueryNewTileTrackStatus ()
| stores track status (available trackdirs) for the new tile into m_new_td_bits
bool | CanExitOldTile ()
| return true if we can leave m_old_tile in m_exitdir
bool | CanEnterNewTile ()
| return true if we can enter m_new_tile from m_exitdir
bool | ForcedReverse ()
| return true if we must reverse (in depots and single tram bits)
bool | TryReverse ()
| return true if we successfully reversed at end of road/track

## Detailed Description

### template<TransportType Ttr_type_, typename VehicleType, bool T90deg_turns_allowed_ = true, bool Tmask_reserved_tracks = false>
struct CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >

Track follower helper template class (can serve pathfinders and vehicle controllers).

See 6 different typedefs below for 3 different transport types w/ or w/o 90-deg turns allowed

Definition at line 30 of file follow_track.hpp.

## Member Function Documentation

template<TransportType Ttr_type_, typename VehicleType , bool T90deg_turns_allowed_ = true, bool Tmask_reserved_tracks = false>

bool CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::Follow | ( | TileIndex | old_tile,
|  | Trackdir | old_td
| ) |  |
| inline

main follower routine.

Fills all members and return true on success. Otherwise returns false if track can't be followed.

Definition at line 121 of file follow_track.hpp.

References CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::CanEnterNewTile(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::CanExitOldTile(), DiagdirReachesTrackdirs(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::FollowTileExit(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::ForcedReverse(), SpecializedVehicle< RoadVehicle, Type >::From(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::GetSingleTramBit(), GetTileTrackStatus(), INVALID_DIAGDIR, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_exitdir, 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_old_td, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_old_tile, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_veh, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::QueryNewTileTrackStatus(), TRACKDIR_BIT_NONE, TrackdirCrossesTrackdirs(), TrackdirToExitdir(), TrackdirToTrackdirBits(), TrackStatusToTrackdirBits(), and CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::TryReverse().

Referenced by CheckNextTrainTile(), ExtendTrainReservation(), FollowReservation(), FreeTrainTrackReservation(), IsSafeWaitingPosition(), IsWaitingPositionFree(), and CYapfCostRailT< Types >::PfCalcCost().

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

- src/pathfinder/follow_track.hpp