track_func.h File Reference

Different conversion functions from one kind of track to another. More...

#include "core/bitmath_func.hpp"
#include "track_type.h"
#include "slope_func.h"

Go to the source code of this file.

Defines

#define FOR_EACH_SET_TRACK(var, track_bits)   FOR_EACH_SET_BIT_EX(Track, var, TrackBits, track_bits)
 Iterate through each set Track in a TrackBits value.

Functions

static Track AxisToTrack (Axis a)
 Convert an Axis to the corresponding Track AXIS_X -> TRACK_X AXIS_Y -> TRACK_Y Uses the fact that they share the same internal encoding.
static TrackBits TrackToTrackBits (Track track)
 Maps a Track to the corresponding TrackBits value.
static TrackBits AxisToTrackBits (Axis a)
 Maps an Axis to the corresponding TrackBits value.
static TrackBits CornerToTrackBits (Corner corner)
 Returns a single horizontal/vertical trackbit that is in a specific tile corner.
static TrackdirBits TrackdirToTrackdirBits (Trackdir trackdir)
 Maps a Trackdir to the corresponding TrackdirBits value.
static Track RemoveFirstTrack (TrackBits *tracks)
 Removes first Track from TrackBits and returns it.
static Trackdir RemoveFirstTrackdir (TrackdirBits *trackdirs)
 Removes first Trackdir from TrackdirBits and returns it.
static Track FindFirstTrack (TrackBits tracks)
 Returns first Track from TrackBits or INVALID_TRACK.
static Track TrackBitsToTrack (TrackBits tracks)
 Converts TrackBits to Track.
static Trackdir FindFirstTrackdir (TrackdirBits trackdirs)
 Returns first Trackdir from TrackdirBits or INVALID_TRACKDIR.
static bool IsValidTrack (Track track)
 Checks if a Track is valid.
static bool IsValidTrackdir (Trackdir trackdir)
 Checks if a Trackdir is valid.
static Track TrackToOppositeTrack (Track t)
 Find the opposite track to a given track.
static Trackdir ReverseTrackdir (Trackdir trackdir)
 Maps a trackdir to the reverse trackdir.
static Track TrackdirToTrack (Trackdir trackdir)
 Returns the Track that a given Trackdir represents.
static Trackdir TrackToTrackdir (Track track)
 Returns a Trackdir for the given Track.
static TrackdirBits TrackToTrackdirBits (Track track)
 Returns a TrackdirBit mask from a given Track.
static TrackBits TrackdirBitsToTrackBits (TrackdirBits bits)
 Discards all directional information from a TrackdirBits value.
static TrackdirBits TrackBitsToTrackdirBits (TrackBits bits)
 Converts TrackBits to TrackdirBits while allowing both directions.
static TrackdirBits TrackStatusToTrackdirBits (TrackStatus ts)
 Returns the present-trackdir-information of a TrackStatus.
static TrackBits TrackStatusToTrackBits (TrackStatus ts)
 Returns the present-track-information of a TrackStatus.
static TrackdirBits TrackStatusToRedSignals (TrackStatus ts)
 Returns the red-signal-information of a TrackStatus.
static TrackStatus CombineTrackStatus (TrackdirBits trackdirbits, TrackdirBits red_signals)
 Builds a TrackStatus.
static Trackdir NextTrackdir (Trackdir trackdir)
 Maps a trackdir to the trackdir that you will end up on if you go straight ahead.
static TrackBits TrackCrossesTracks (Track track)
 Maps a track to all tracks that make 90 deg turns with it.
static DiagDirection TrackdirToExitdir (Trackdir trackdir)
 Maps a trackdir to the (4-way) direction the tile is exited when following that trackdir.
static Trackdir TrackExitdirToTrackdir (Track track, DiagDirection diagdir)
 Maps a track and an (4-way) dir to the trackdir that represents the track with the exit in the given direction.
static Trackdir TrackEnterdirToTrackdir (Track track, DiagDirection diagdir)
 Maps a track and an (4-way) dir to the trackdir that represents the track with the entry in the given direction.
static Trackdir TrackDirectionToTrackdir (Track track, Direction dir)
 Maps a track and a full (8-way) direction to the trackdir that represents the track running in the given direction.
static Track DiagDirToDiagTrack (DiagDirection diagdir)
 Maps a (4-way) direction to the diagonal track incidating with that diagdir.
static TrackBits DiagDirToDiagTrackBits (DiagDirection diagdir)
 Maps a (4-way) direction to the diagonal track bits incidating with that diagdir.
static Trackdir DiagDirToDiagTrackdir (DiagDirection diagdir)
 Maps a (4-way) direction to the diagonal trackdir that runs in that direction.
static TrackdirBits DiagdirReachesTrackdirs (DiagDirection diagdir)
 Returns all trackdirs that can be reached when entering a tile from a given (diagonal) direction.
static TrackBits DiagdirReachesTracks (DiagDirection diagdir)
 Returns all tracks that can be reached when entering a tile from a given (diagonal) direction.
static TrackdirBits TrackdirReachesTrackdirs (Trackdir trackdir)
 Maps a trackdir to the trackdirs that can be reached from it (ie, when entering the next tile.
static TrackdirBits TrackdirCrossesTrackdirs (Trackdir trackdir)
 Maps a trackdir to all trackdirs that make 90 deg turns with it.
static bool IsDiagonalTrack (Track track)
 Checks if a given Track is diagonal.
static bool IsDiagonalTrackdir (Trackdir trackdir)
 Checks if a given Trackdir is diagonal.
static bool TracksOverlap (TrackBits bits)
 Checks if the given tracks overlap, ie form a crossing.
static bool TrackOverlapsTracks (TrackBits tracks, Track track)
 Check if a given track is contained within or overlaps some other tracks.
static bool IsReversingRoadTrackdir (Trackdir dir)
 Checks whether the trackdir means that we are reversing.
static bool IsStraightRoadTrackdir (Trackdir dir)
 Checks whether the given trackdir is a straight road.
static bool IsUphillTrackdir (Slope slope, Trackdir dir)
 Checks whether a trackdir on a specific slope is going uphill.

Detailed Description

Different conversion functions from one kind of track to another.

Definition in file track_func.h.


Define Documentation

#define FOR_EACH_SET_TRACK ( var,
track_bits   )     FOR_EACH_SET_BIT_EX(Track, var, TrackBits, track_bits)

Iterate through each set Track in a TrackBits value.

For more informations see FOR_EACH_SET_BIT_EX.

Parameters:
var Loop index variable that stores fallowing set track. Must be of type Track.
track_bits The value to iterate through (any expression).
See also:
FOR_EACH_SET_BIT_EX

Definition at line 28 of file track_func.h.

Referenced by DeleteLastWagon(), and DrawCatenaryRailway().


Function Documentation

static Track AxisToTrack ( Axis  a  )  [inline, static]

Convert an Axis to the corresponding Track AXIS_X -> TRACK_X AXIS_Y -> TRACK_Y Uses the fact that they share the same internal encoding.

Parameters:
a the axis to convert
Returns:
the track corresponding to the axis

Definition at line 39 of file track_func.h.

Referenced by AxisToTrackBits(), CmdBuildBridge(), CmdBuildRailStation(), CmdBuildRailWaypoint(), CmdBuildRoad(), GetCrossingRailTrack(), and GetRailStationTrack().

static TrackBits AxisToTrackBits ( Axis  a  )  [inline, static]

Maps an Axis to the corresponding TrackBits value.

Parameters:
a the axis to convert
Returns:
the converted TrackBits value of the axis

Definition at line 59 of file track_func.h.

References AxisToTrack(), and TrackToTrackBits().

Referenced by GetCrossingRailBits(), and GetRailStationTrackBits().

static TrackStatus CombineTrackStatus ( TrackdirBits  trackdirbits,
TrackdirBits  red_signals 
) [inline, static]

Builds a TrackStatus.

Parameters:
trackdirbits present trackdirs
red_signals red signals
Returns:
the TrackStatus representing the given information

Definition at line 359 of file track_func.h.

static TrackBits CornerToTrackBits ( Corner  corner  )  [inline, static]

Returns a single horizontal/vertical trackbit that is in a specific tile corner.

Parameters:
corner The corner of a tile.
Returns:
The TrackBits of the track in the corner.

Definition at line 70 of file track_func.h.

References IsValidCorner().

Referenced by DrawTrackBits(), FloodHalftile(), and GetRailFoundation().

static TrackdirBits DiagdirReachesTrackdirs ( DiagDirection  diagdir  )  [inline, static]

Returns all trackdirs that can be reached when entering a tile from a given (diagonal) direction.

This will obviously include 90 degree turns, since no information is available about the exact angle of entering

Parameters:
diagdir The joining direction
Returns:
The TrackdirBits which can be used from the given direction
See also:
DiagdirReachesTracks

Definition at line 514 of file track_func.h.

References DIAGDIR_END.

Referenced by DiagdirReachesTracks(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::Follow(), IsSafeWaitingPosition(), IsWaitingPositionFree(), MaskWireBits(), TrainCheckIfLineEnds(), TryPathReserve(), and CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::TryReverse().

static TrackBits DiagdirReachesTracks ( DiagDirection  diagdir  )  [inline, static]

Returns all tracks that can be reached when entering a tile from a given (diagonal) direction.

This will obviously include 90 degree turns, since no information is available about the exact angle of entering

Parameters:
diagdir The joining irection
Returns:
The tracks which can be used
See also:
DiagdirReachesTrackdirs

Definition at line 531 of file track_func.h.

References DiagdirReachesTrackdirs(), and TrackdirBitsToTrackBits().

Referenced by AIMarine::AreWaterTilesConnected(), MaskWireBits(), OPFShipChooseTrack(), PlaceExtraDepotRail(), and TryPathReserve().

static Track DiagDirToDiagTrack ( DiagDirection  diagdir  )  [inline, static]

Maps a (4-way) direction to the diagonal track incidating with that diagdir.

Parameters:
diagdir The direction
Returns:
The resulting Track

Definition at line 474 of file track_func.h.

Referenced by CmdBuildTrainDepot(), CmdBuildTunnel(), CmdConvertRail(), DiagDirToDiagTrackBits(), DoClearBridge(), DoClearTunnel(), GetRailDepotTrack(), and Train::ReserveTrackUnderConsist().

static TrackBits DiagDirToDiagTrackBits ( DiagDirection  diagdir  )  [inline, static]

Maps a (4-way) direction to the diagonal track bits incidating with that diagdir.

Parameters:
diagdir The direction
Returns:
The resulting TrackBits

Definition at line 485 of file track_func.h.

References DiagDirToDiagTrack(), and TrackToTrackBits().

Referenced by AfterLoadGame(), CollectTrackbitsFromCrashedVehiclesEnum(), DeleteLastWagon(), GetRailTrackBitsUniversal(), and GetTunnelBridgeReservationTrackBits().

static Trackdir DiagDirToDiagTrackdir ( DiagDirection  diagdir  )  [inline, static]

Maps a (4-way) direction to the diagonal trackdir that runs in that direction.

Parameters:
diagdir The direction
Returns:
The resulting Trackdir direction

Definition at line 497 of file track_func.h.

References DIAGDIR_END.

Referenced by AfterLoadGame(), Train::GetVehicleTrackdir(), Ship::GetVehicleTrackdir(), RoadVehicle::GetVehicleTrackdir(), NPFRoadVehicleChooseTrack(), and CYapfCostRoadT< Types >::PfCalcCost().

static Track FindFirstTrack ( TrackBits  tracks  )  [inline, static]

Returns first Track from TrackBits or INVALID_TRACK.

This function returns the first Track found in the TrackBits value as Track-value. It returns INVALID_TRACK if the parameter is TRACK_BIT_NONE or INVALID_TRACK_BIT.

Parameters:
tracks The TrackBits value
Returns:
The first Track found or INVALID_TRACK
See also:
RemoveFirstTrack

Definition at line 147 of file track_func.h.

References FIND_FIRST_BIT, INVALID_TRACK, INVALID_TRACK_BIT, and TRACK_BIT_NONE.

Referenced by AIRail::BuildRailTrack(), GenericPlaceSignals(), Train::GetVehicleTrackdir(), Ship::GetVehicleTrackdir(), NPFTrainChooseTrack(), AIRail::RemoveRailTrack(), TrainCheckIfLineEnds(), and YapfTrainChooseTrack().

static Trackdir FindFirstTrackdir ( TrackdirBits  trackdirs  )  [inline, static]

Returns first Trackdir from TrackdirBits or INVALID_TRACKDIR.

This function returns the first Trackdir in the given TrackdirBits value or INVALID_TRACKDIR if the value is TRACKDIR_BIT_NONE. The TrackdirBits must not be INVALID_TRACKDIR_BIT.

Parameters:
trackdirs The TrackdirBits value
Returns:
The first Trackdir from the TrackdirBits or INVALID_TRACKDIR on TRACKDIR_BIT_NONE.
Precondition:
trackdirs must not be INVALID_TRACKDIR_BIT
See also:
RemoveFirstTrackdir

Definition at line 181 of file track_func.h.

References FindFirstBit2x64(), INVALID_TRACKDIR, TRACKDIR_BIT_MASK, and TRACKDIR_BIT_NONE.

Referenced by CheckNextTrainTile(), ExtendTrainReservation(), FollowReservation(), and IsSafeWaitingPosition().

static bool IsDiagonalTrack ( Track  track  )  [inline, static]

Checks if a given Track is diagonal.

Parameters:
track The given track to check
Returns:
true if diagonal, else false

Definition at line 575 of file track_func.h.

References TRACK_X, and TRACK_Y.

Referenced by IsDiagonalTrackdir().

static bool IsDiagonalTrackdir ( Trackdir  trackdir  )  [inline, static]

Checks if a given Trackdir is diagonal.

Parameters:
trackdir The given trackdir
Returns:
true if the trackdir use a diagonal track

Definition at line 586 of file track_func.h.

References IsDiagonalTrack(), and TrackdirToTrack().

Referenced by CmdRailTrackHelper(), CmdSignalTrackHelper(), CYapfCostRoadT< Types >::OneTileCost(), CYapfCostRailT< Types >::OneTileCost(), CYapfCostShipT< Types >::PfCalcCost(), CYapfCostRailT< Types >::ReservationCost(), and CYapfCostBase::stSlopeCost().

static bool IsReversingRoadTrackdir ( Trackdir  dir  )  [inline, static]

Checks whether the trackdir means that we are reversing.

Parameters:
dir the trackdir to check
Returns:
true if it is a reversing road trackdir

Definition at line 627 of file track_func.h.

Referenced by RoadVehicle::GetCurrentMaxSpeed(), RoadVehicle::GetVehicleTrackdir(), and RoadVehicle::HasToUseGetSlopeZ().

static bool IsStraightRoadTrackdir ( Trackdir  dir  )  [inline, static]

Checks whether the given trackdir is a straight road.

Parameters:
dir the trackdir to check
Returns:
true if it is a straight road trackdir

Definition at line 637 of file track_func.h.

static bool IsUphillTrackdir ( Slope  slope,
Trackdir  dir 
) [inline, static]

Checks whether a trackdir on a specific slope is going uphill.

Valid for rail and road tracks. Valid for tile-slopes (under foundation) and foundation-slopes (on foundation).

Parameters:
slope The slope of the tile.
dir The trackdir of interest.
Returns:
true iff the track goes upwards.

Definition at line 652 of file track_func.h.

References HasBit(), and RemoveHalftileSlope().

Referenced by CYapfCostBase::stSlopeCost().

static bool IsValidTrack ( Track  track  )  [inline, static]

Checks if a Track is valid.

Parameters:
track The value to check
Returns:
true if the given value is a valid track.
Note:
Use this in an assert()

Definition at line 194 of file track_func.h.

References TRACK_END.

Referenced by HasSignalOnTrack().

static bool IsValidTrackdir ( Trackdir  trackdir  )  [inline, static]

Checks if a Trackdir is valid.

Parameters:
trackdir The value to check
Returns:
true if the given valie is a valid Trackdir
Note:
Use this in an assert()

Definition at line 206 of file track_func.h.

References TRACKDIR_BIT_MASK, and TrackdirToTrackdirBits().

Referenced by FreeTrainTrackReservation(), GetSignalStateByTrackdir(), HasSignalOnTrackdir(), NPFHash(), and NPFTrainChooseTrack().

static Trackdir NextTrackdir ( Trackdir  trackdir  )  [inline, static]

Maps a trackdir to the trackdir that you will end up on if you go straight ahead.

This will be the same trackdir for diagonal trackdirs, but a different (alternating) one for straight trackdirs

Parameters:
trackdir The given trackdir
Returns:
The next Trackdir value of the next tile.

Definition at line 374 of file track_func.h.

References TRACKDIR_END.

Referenced by CYapfCostShipT< Types >::PfCalcCost().

static Track RemoveFirstTrack ( TrackBits tracks  )  [inline, static]

Removes first Track from TrackBits and returns it.

This function searchs for the first bit in the TrackBits, remove this bit from the parameter and returns the found bit as Track value. It returns INVALID_TRACK if the parameter was TRACK_BIT_NONE or INVALID_TRACK_BIT. This is basically used in while-loops to get up to 6 possible tracks on a tile until the parameter becomes TRACK_BIT_NONE.

Parameters:
tracks The value with the TrackBits
Returns:
The first Track from the TrackBits value
See also:
FindFirstTrack

Definition at line 103 of file track_func.h.

References ClrBit(), FIND_FIRST_BIT, INVALID_TRACK, INVALID_TRACK_BIT, and TRACK_BIT_NONE.

Referenced by ChangeOwnershipOfCompanyItems(), CheckFlatLandRailStation(), CmdConvertRail(), and SetTrackReservation().

static Trackdir RemoveFirstTrackdir ( TrackdirBits trackdirs  )  [inline, static]

Removes first Trackdir from TrackdirBits and returns it.

This function searchs for the first bit in the TrackdirBits parameter, remove this bit from the parameter and returns the fnound bit as Trackdir value. It returns INVALID_TRACKDIR if the trackdirs is TRACKDIR_BIT_NONE or INVALID_TRACKDIR_BIT. This is basically used in a while-loop to get all track-directions step by step until the value reaches TRACKDIR_BIT_NONE.

Parameters:
trackdirs The value with the TrackdirBits
Returns:
The first Trackdir from the TrackdirBits value
See also:
FindFirstTrackdir

Definition at line 127 of file track_func.h.

References ClrBit(), FindFirstBit2x64(), INVALID_TRACKDIR, INVALID_TRACKDIR_BIT, and TRACKDIR_BIT_NONE.

Referenced by FreeTrainTrackReservation(), and CYapfCostRailT< Types >::PfCalcCost().

static Trackdir ReverseTrackdir ( Trackdir  trackdir  )  [inline, static]
static Track TrackBitsToTrack ( TrackBits  tracks  )  [inline, static]

Converts TrackBits to Track.

This function converts a TrackBits value to a Track value. As it is not possible to convert two or more tracks to one track the parameter must contain only one track or be the INVALID_TRACK_BIT value.

Parameters:
tracks The TrackBits value to convert
Returns:
The Track from the value or INVALID_TRACK
Precondition:
tracks must contains only one Track or be INVALID_TRACK_BIT

Definition at line 163 of file track_func.h.

References FIND_FIRST_BIT, INVALID_TRACK, INVALID_TRACK_BIT, KillFirstBit(), TRACK_BIT_MASK, and TRACK_BIT_NONE.

Referenced by CmdRemoveSingleSignal(), DeleteLastWagon(), ExploreSegment(), and Train::ReserveTrackUnderConsist().

static TrackdirBits TrackBitsToTrackdirBits ( TrackBits  bits  )  [inline, static]

Converts TrackBits to TrackdirBits while allowing both directions.

Parameters:
bits The TrackBits
Returns:
The TrackdirBits containing of bits in both directions.

Definition at line 312 of file track_func.h.

Referenced by FollowReservation(), and FreeTrainTrackReservation().

static TrackBits TrackCrossesTracks ( Track  track  )  [inline, static]

Maps a track to all tracks that make 90 deg turns with it.

For the diagonal directions these are the complement of the direction, for the straight directions these are the two vertical or horizontal tracks, depend on the given direction

Parameters:
track The given track
Returns:
The TrackBits with the tracks marked which cross the given track by 90 deg.

Definition at line 390 of file track_func.h.

References TRACK_END.

Referenced by CheckNextTrainTile(), TrainCheckIfLineEnds(), and TryPathReserve().

static TrackBits TrackdirBitsToTrackBits ( TrackdirBits  bits  )  [inline, static]

Discards all directional information from a TrackdirBits value.

Any Track which is present in either direction will be present in the result.

Parameters:
bits The TrackdirBits to get the TrackBits from
Returns:
The TrackBits

Definition at line 301 of file track_func.h.

References TRACK_BIT_MASK.

Referenced by CheckNextTrainTile(), CheckRoadBlockedForOvertaking(), CmdRemoveSingleSignal(), DiagdirReachesTracks(), ExtendTrainReservation(), IsWaitingPositionFree(), MaskWireBits(), TrackStatusToTrackBits(), TrainCheckIfLineEnds(), and TryPathReserve().

static TrackdirBits TrackdirCrossesTrackdirs ( Trackdir  trackdir  )  [inline, static]

Maps a trackdir to all trackdirs that make 90 deg turns with it.

For the diagonal tracks this returns the track direction bits of the other axis in both directions, which cannot be joined by the given track direction. For the straight tracks this returns all possible 90 deg turns either on the current tile (which no train can joined) or on the bordering tiles.

Parameters:
trackdir The track direction
Returns:
The TrackdirBits which are (more or less) 90 deg turns.

Definition at line 563 of file track_func.h.

References TRACKDIR_END, and TrackdirToTrack().

Referenced by ExtendTrainReservation(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::Follow(), GetDriveableTrackdirBits(), IsSafeWaitingPosition(), and IsWaitingPositionFree().

static TrackdirBits TrackdirReachesTrackdirs ( Trackdir  trackdir  )  [inline, static]

Maps a trackdir to the trackdirs that can be reached from it (ie, when entering the next tile.

This will include 90 degree turns!

Parameters:
trackdir The track direction which will be leaved
Returns:
The track directions which can be used from this direction (in the next tile)

Definition at line 542 of file track_func.h.

References DIAGDIR_END, and TrackdirToExitdir().

Referenced by CmdRemoveSingleSignal(), ExtendTrainReservation(), and GetDriveableTrackdirBits().

static DiagDirection TrackdirToExitdir ( Trackdir  trackdir  )  [inline, static]
static Track TrackdirToTrack ( Trackdir  trackdir  )  [inline, static]
static TrackdirBits TrackdirToTrackdirBits ( Trackdir  trackdir  )  [inline, static]
static Trackdir TrackEnterdirToTrackdir ( Track  track,
DiagDirection  diagdir 
) [inline, static]

Maps a track and an (4-way) dir to the trackdir that represents the track with the entry in the given direction.

For the diagonal tracks the return value is clear, its either the matching track direction or INVALID_TRACKDIR. For the straight tracks this returns the track direction which results if you follow the DiagDirection and then turn by 45 deg left or right on the next tile. The new direction on the new track will be the returning Trackdir value. If the parameters makes no sense like the track TRACK_UPPER and the diraction DIAGDIR_NE (target track cannot be reached) this function returns INVALID_TRACKDIR.

Parameters:
track The target track
diagdir The direction to "come from"
Returns:
the resulting Trackdir or INVALID_TRACKDIR if not possible.

Definition at line 452 of file track_func.h.

References DIAGDIR_END, and TRACK_END.

static Trackdir TrackExitdirToTrackdir ( Track  track,
DiagDirection  diagdir 
) [inline, static]

Maps a track and an (4-way) dir to the trackdir that represents the track with the exit in the given direction.

For the diagonal tracks the resulting track direction are clear for a given DiagDirection. It either matches the direction or it returns INVALID_TRACKDIR, as a TRACK_X cannot be applied with DIAG_SE. For the straight tracks the resulting track direction will be the direction which the DiagDirection is pointing. But this will be INVALID_TRACKDIR if the DiagDirection is pointing 'away' the track.

Parameters:
track The track to applie an direction on
diagdir The DiagDirection to applie on
Returns:
The resulting track direction or INVALID_TRACKDIR if not possible.

Definition at line 429 of file track_func.h.

References DIAGDIR_END, and TRACK_END.

static bool TrackOverlapsTracks ( TrackBits  tracks,
Track  track 
) [inline, static]

Check if a given track is contained within or overlaps some other tracks.

Parameters:
tracks Tracks to be testet against
track The track to test
Returns:
true if the track is already in the tracks or overlaps the tracks.

Definition at line 616 of file track_func.h.

References HasBit(), TracksOverlap(), and TrackToTrackBits().

Referenced by IsWaitingPositionFree(), and CYapfCostRailT< Types >::ReservationCost().

static bool TracksOverlap ( TrackBits  bits  )  [inline, static]

Checks if the given tracks overlap, ie form a crossing.

Basically this means when there is more than one track on the tile, exept when there are two parallel tracks.

Parameters:
bits The tracks present.
Returns:
Whether the tracks present overlap in any way.

Definition at line 599 of file track_func.h.

References KillFirstBit(), TRACK_BIT_HORZ, TRACK_BIT_NONE, and TRACK_BIT_VERT.

Referenced by FreeTrainTrackReservation(), GetRailFoundation(), MaskWireBits(), SetTrackReservation(), TrackOverlapsTracks(), and TryReserveTrack().

static TrackdirBits TrackStatusToRedSignals ( TrackStatus  ts  )  [inline, static]

Returns the red-signal-information of a TrackStatus.

Note: The result may contain red signals for non-present tracks.

Parameters:
ts The TrackStatus returned by GetTileTrackStatus()
Returns:
the The trackdirs that are blocked by red-signals

Definition at line 347 of file track_func.h.

References TRACKDIR_BIT_MASK.

Referenced by CheckRoadBlockedForOvertaking(), RoadFindPathToDest(), and TrainCheckIfLineEnds().

static TrackBits TrackStatusToTrackBits ( TrackStatus  ts  )  [inline, static]

Returns the present-track-information of a TrackStatus.

Parameters:
ts The TrackStatus returned by GetTileTrackStatus()
Returns:
the present tracks

Definition at line 334 of file track_func.h.

References TrackdirBitsToTrackBits(), and TrackStatusToTrackdirBits().

Referenced by AfterLoadGame(), AIMarine::AreWaterTilesConnected(), DisasterTick_Submarine(), GenericPlaceSignals(), MaskWireBits(), OPFShipChooseTrack(), RoadVehicle::TileMayHaveSlopedTrack(), and UpdateSignalsInBuffer().

static TrackdirBits TrackStatusToTrackdirBits ( TrackStatus  ts  )  [inline, static]
static Track TrackToOppositeTrack ( Track  t  )  [inline, static]

Find the opposite track to a given track.

TRACK_LOWER -> TRACK_UPPER and vice versa, likewise for left/right. TRACK_X is mapped to TRACK_Y and reversed.

Parameters:
t the track to convert
Returns:
the opposite track

Definition at line 226 of file track_func.h.

References INVALID_TRACK.

Referenced by GetRailReservationTrackBits().

static TrackBits TrackToTrackBits ( Track  track  )  [inline, static]
static Trackdir TrackToTrackdir ( Track  track  )  [inline, static]

Returns a Trackdir for the given Track.

Since every Track corresponds to two Trackdirs, we choose the one which points between NE and S. Note that the actual implementation is quite futile, but this might change in the future.

Parameters:
track The given Track
Returns:
The Trackdir from the given Track

Definition at line 273 of file track_func.h.

Referenced by CmdRailTrackHelper(), CmdRemoveSingleSignal(), CmdSignalTrackHelper(), GetTrainForReservation(), and TrackToTrackdirBits().

static TrackdirBits TrackToTrackdirBits ( Track  track  )  [inline, static]

Returns a TrackdirBit mask from a given Track.

The TrackdirBit mask contains the two TrackdirBits that correspond with the given Track (one for each direction).

Parameters:
track The track to get the TrackdirBits from
Returns:
The TrackdirBits which the selected tracks

Definition at line 287 of file track_func.h.

References ReverseTrackdir(), TrackdirToTrackdirBits(), and TrackToTrackdir().


Generated on Fri Jun 3 05:19:27 2011 for OpenTTD by  doxygen 1.6.1