OpenTTD Source
20240919-master-gdf0233f4c2
|
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_ROAD_TYPE, EC_90DEG, EC_NO_WAY, EC_RESERVED } |
Public Member Functions | |
CFollowTrackT (const VehicleType *v=nullptr, RailTypes railtype_override=INVALID_RAILTYPES) | |
CFollowTrackT (Owner o, RailTypes railtype_override=INVALID_RAILTYPES) | |
void | Init (const VehicleType *v, RailTypes railtype_override) |
void | Init (Owner o, RailTypes railtype_override) |
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. More... | |
bool | MaskReservedTracks () |
int | GetSpeedLimit (int *pmin_speed=nullptr) const |
Helper for pathfinders - get min/max speed on the m_old_tile/m_old_td. | |
Static Public Member Functions | |
static debug_inline TransportType | TT () |
static debug_inline bool | IsWaterTT () |
static debug_inline bool | IsRailTT () |
static debug_inline 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 |
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 | |
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 28 of file follow_track.hpp.
|
inline |
main follower routine.
Fills all members and return true on success. Otherwise returns false if track can't be followed.
Definition at line 119 of file follow_track.hpp.
References CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::GetSingleTramBit(), INVALID_DIAGDIR, 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, and CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_veh.
Referenced by ExtendTrainReservation(), and FollowReservation().