OpenTTD
|
PBS support routines. More...
#include "stdafx.h"
#include "viewport_func.h"
#include "vehicle_func.h"
#include "newgrf_station.h"
#include "pathfinder/follow_track.hpp"
#include "safeguards.h"
Go to the source code of this file.
Data Structures | |
struct | FindTrainOnTrackInfo |
Helper struct for finding the best matching vehicle on a specific track. More... | |
Functions | |
TrackBits | GetReservedTrackbits (TileIndex t) |
Get the reserved trackbits for any tile, regardless of type. More... | |
void | SetRailStationPlatformReservation (TileIndex start, DiagDirection dir, bool b) |
Set the reservation for a complete station platform. More... | |
bool | TryReserveRailTrack (TileIndex tile, Track t, bool trigger_stations) |
Try to reserve a specific track on a tile. More... | |
void | UnreserveRailTrack (TileIndex tile, Track t) |
Lift the reservation of a specific track on a tile. More... | |
static PBSTileInfo | FollowReservation (Owner o, RailTypes rts, TileIndex tile, Trackdir trackdir, bool ignore_oneway=false) |
Follow a reservation starting from a specific tile to the end. More... | |
static Vehicle * | FindTrainOnTrackEnum (Vehicle *v, void *data) |
Callback for Has/FindVehicleOnPos to find a train on a specific track. More... | |
PBSTileInfo | FollowTrainReservation (const Train *v, Vehicle **train_on_res) |
Follow a train reservation to the last tile. More... | |
Train * | GetTrainForReservation (TileIndex tile, Track track) |
Find the train which has reserved a specific path. More... | |
bool | IsSafeWaitingPosition (const Train *v, TileIndex tile, Trackdir trackdir, bool include_line_end, bool forbid_90deg) |
Determine whether a certain track on a tile is a safe position to end a path. More... | |
bool | IsWaitingPositionFree (const Train *v, TileIndex tile, Trackdir trackdir, bool forbid_90deg) |
Check if a safe position is free. More... | |
PBS support routines.
Definition in file pbs.cpp.
Callback for Has/FindVehicleOnPos to find a train on a specific track.
Definition at line 266 of file pbs.cpp.
References FindTrainOnTrackInfo::best, SpecializedVehicle< T, Type >::First(), SpecializedVehicle< Train, Type >::From(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, FindTrainOnTrackInfo::res, TRACK_BIT_WORMHOLE, PBSTileInfo::trackdir, TrackdirToTrack(), BaseVehicle::type, VEH_TRAIN, Vehicle::vehstatus, and VS_CRASHED.
|
static |
Follow a reservation starting from a specific tile to the end.
Definition at line 190 of file pbs.cpp.
References DiagDirToDiagTrackdir(), FindFirstTrackdir(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::Follow(), GetReservedTrackbits(), HasOnewaySignalBlockingTrackdir(), HasReservedTracks(), HasSignalOnTrackdir(), HasStationReservation(), IsRailDepotTile(), IsTileType(), CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_exitdir, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_is_station, 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, CFollowTrackT< Ttr_type_, VehicleType, T90deg_turns_allowed_, Tmask_reserved_tracks >::m_tiles_skipped, MP_RAILWAY, TileOffsByDiagDir(), TrackBitsToTrackdirBits(), TRACKDIR_BIT_NONE, TrackdirToTrack(), and TrackToTrackBits().
PBSTileInfo FollowTrainReservation | ( | const Train * | v, |
Vehicle ** | train_on_res | ||
) |
Follow a train reservation to the last tile.
v | the vehicle |
train_on_res | Is set to a train we might encounter |
Definition at line 291 of file pbs.cpp.
Referenced by ExtendTrainReservation(), PBSTileInfo::PBSTileInfo(), and YapfTrainFindNearestDepot().
Get the reserved trackbits for any tile, regardless of type.
t | the tile |
Definition at line 26 of file pbs.cpp.
References GetCrossingReservationTrackBits(), GetDepotReservationTrackBits(), GetRailReservationTrackBits(), GetStationReservationTrackBits(), GetTileType(), GetTunnelBridgeReservationTrackBits(), GetTunnelBridgeTransportType(), HasStationRail(), IsLevelCrossing(), IsPlainRail(), IsRailDepot(), MP_RAILWAY, MP_ROAD, MP_STATION, MP_TUNNELBRIDGE, TRACK_BIT_NONE, and TRANSPORT_RAIL.
Referenced by CmdConvertRail(), FollowReservation(), HasReservedTracks(), and IsWaitingPositionFree().
Find the train which has reserved a specific path.
tile | A tile on the path. |
track | A reserved track on the tile. |
Definition at line 333 of file pbs.cpp.
Referenced by CmdConvertRail(), and PBSTileInfo::PBSTileInfo().
bool IsSafeWaitingPosition | ( | const Train * | v, |
TileIndex | tile, | ||
Trackdir | trackdir, | ||
bool | include_line_end, | ||
bool | forbid_90deg | ||
) |
Determine whether a certain track on a tile is a safe position to end a path.
v | the vehicle to test for |
tile | The tile |
trackdir | The trackdir to test |
include_line_end | Should end-of-line tiles be considered safe? |
forbid_90deg | Don't allow trains to make 90 degree turns |
Definition at line 383 of file pbs.cpp.
References HasSignalOnTrackdir(), IsRailDepotTile(), IsTileType(), and MP_RAILWAY.
Referenced by ExtendTrainReservation(), FindSafePosition(), NPFFindSafeTile(), PBSTileInfo::PBSTileInfo(), and CYapfDestinationAnySafeTileRailT< Types >::PfDetectDestination().
bool IsWaitingPositionFree | ( | const Train * | v, |
TileIndex | tile, | ||
Trackdir | trackdir, | ||
bool | forbid_90deg | ||
) |
Check if a safe position is free.
v | the vehicle to test for |
tile | The tile |
trackdir | The trackdir to test |
forbid_90deg | Don't allow trains to make 90 degree turns |
Definition at line 429 of file pbs.cpp.
References GetReservedTrackbits(), HasSignalOnTrackdir(), IsRailDepotTile(), IsTileType(), MP_RAILWAY, TrackdirToTrack(), and TrackOverlapsTracks().
Referenced by ExtendTrainReservation(), NPFFindSafeTile(), NPFSaveTargetData(), PBSTileInfo::PBSTileInfo(), CYapfDestinationAnySafeTileRailT< Types >::PfDetectDestination(), and CYapfReserveTrack< Types >::TryReservePath().
void SetRailStationPlatformReservation | ( | TileIndex | start, |
DiagDirection | dir, | ||
bool | b | ||
) |
Set the reservation for a complete station platform.
start | starting tile of the platform |
dir | the direction in which to follow the platform |
b | the state the reservation should be set to |
Definition at line 59 of file pbs.cpp.
References TileOffsByDiagDir().
Referenced by ClearPathReservation(), FreeTrainReservation(), NPFSaveTargetData(), and RestoreTrainReservation().
Try to reserve a specific track on a tile.
tile | the tile |
t | the track |
trigger_stations | whether to call station randomisation trigger |
true
if reservation was successful, i.e. the track was free and didn't cross any other reserved tracks. Definition at line 82 of file pbs.cpp.
Referenced by ExtendTrainReservation(), NPFSaveTargetData(), CYapfReserveTrack< Types >::ReserveSingleTrack(), and Train::ReserveTrackUnderConsist().
Lift the reservation of a specific track on a tile.
tile | the tile |
t | the track |
Definition at line 143 of file pbs.cpp.
Referenced by ClearPathReservation(), DeleteLastWagon(), and CYapfReserveTrack< Types >::UnreserveSingleTrack().