|
@@ -361,25 +361,25 @@ static inline Track FindFirstTrack(Track
|
|
|
* 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.
|
|
|
*
|
|
|
* @param tracks The TrackBits value to convert
|
|
|
* @return The Track from the value or INVALID_TRACK
|
|
|
* @pre tracks must contains only one Track or be INVALID_TRACK_BIT
|
|
|
*/
|
|
|
static inline Track TrackBitsToTrack(TrackBits tracks)
|
|
|
{
|
|
|
assert(tracks == INVALID_TRACK_BIT || (tracks != TRACK_BIT_NONE && KILL_FIRST_BIT(tracks & TRACK_BIT_MASK) == 0));
|
|
|
assert(tracks == INVALID_TRACK_BIT || (tracks != TRACK_BIT_NONE && KillFirstBit(tracks & TRACK_BIT_MASK) == TRACK_BIT_NONE));
|
|
|
return tracks != INVALID_TRACK_BIT ? (Track)FIND_FIRST_BIT(tracks & TRACK_BIT_MASK) : INVALID_TRACK;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 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.
|
|
|
*
|
|
|
* @param trackdirs The TrackdirBits value
|
|
|
* @return The first Trackdir from the TrackdirBits or INVALID_TRACKDIR on TRACKDIR_BIT_NONE.
|
|
@@ -776,25 +776,25 @@ static inline bool HasPowerOnRail(RailTy
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 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.
|
|
|
* @param bits The tracks present.
|
|
|
* @return Whether the tracks present overlap in any way.
|
|
|
*/
|
|
|
static inline bool TracksOverlap(TrackBits bits)
|
|
|
{
|
|
|
/* With no, or only one track, there is no overlap */
|
|
|
if (bits == 0 || KILL_FIRST_BIT(bits) == 0) return false;
|
|
|
if (bits == TRACK_BIT_NONE || KillFirstBit(bits) == TRACK_BIT_NONE) return false;
|
|
|
/* We know that there are at least two tracks present. When there are more
|
|
|
* than 2 tracks, they will surely overlap. When there are two, they will
|
|
|
* always overlap unless they are lower & upper or right & left. */
|
|
|
return bits != TRACK_BIT_HORZ && bits != TRACK_BIT_VERT;
|
|
|
}
|
|
|
|
|
|
|
|
|
extern int _railtype_cost_multiplier[RAILTYPE_END];
|
|
|
extern const int _default_railtype_cost_multiplier[RAILTYPE_END];
|
|
|
|
|
|
/**
|
|
|
* Returns the cost of building the specified railtype.
|