|
OpenTTD Source
1.10.0-RC1
|
PBS support routines. More...
#include "tile_type.h"#include "direction_type.h"#include "track_type.h"#include "vehicle_type.h"Go to the source code of this file.
Data Structures | |
| struct | PBSTileInfo |
| This struct contains information about the end of a reserved path. 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=true) |
| 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... | |
| PBSTileInfo | FollowTrainReservation (const Train *v, Vehicle **train_on_res=nullptr) |
| Follow a train reservation to the last tile. More... | |
| bool | IsSafeWaitingPosition (const Train *v, TileIndex tile, Trackdir trackdir, bool include_line_end, bool forbid_90deg=false) |
| 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=false) |
| Check if a safe position is free. More... | |
| Train * | GetTrainForReservation (TileIndex tile, Track track) |
| Find the train which has reserved a specific path. More... | |
| static bool | HasReservedTracks (TileIndex tile, TrackBits tracks) |
| Check whether some of tracks is reserved on a tile. More... | |
PBS support routines.
Definition in file pbs.h.
| 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 289 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 24 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 331 of file pbs.cpp.
Referenced by CmdConvertRail(), and PBSTileInfo::PBSTileInfo().
Check whether some of tracks is reserved on a tile.
| tile | the tile |
| tracks | the tracks to test |
Definition at line 58 of file pbs.h.
References GetReservedTrackbits(), and TRACK_BIT_NONE.
Referenced by DeleteLastWagon(), ExtendTrainReservation(), and FollowReservation().
| 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 381 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 427 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 57 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 80 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 141 of file pbs.cpp.
Referenced by ClearPathReservation(), DeleteLastWagon(), and CYapfReserveTrack< Types >::UnreserveSingleTrack().