Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef PBS_H
00013 #define PBS_H
00014
00015 #include "tile_type.h"
00016 #include "direction_type.h"
00017 #include "track_type.h"
00018 #include "vehicle_type.h"
00019
00020 TrackBits GetReservedTrackbits(TileIndex t);
00021
00022 void SetRailStationPlatformReservation(TileIndex start, DiagDirection dir, bool b);
00023
00024 bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations = true);
00025 void UnreserveRailTrack(TileIndex tile, Track t);
00026
00028 struct PBSTileInfo {
00029 TileIndex tile;
00030 Trackdir trackdir;
00031 bool okay;
00032
00036 PBSTileInfo() : tile(INVALID_TILE), trackdir(INVALID_TRACKDIR), okay(false) {}
00037
00044 PBSTileInfo(TileIndex _t, Trackdir _td, bool _okay) : tile(_t), trackdir(_td), okay(_okay) {}
00045 };
00046
00047 PBSTileInfo FollowTrainReservation(const Train *v, Vehicle **train_on_res = NULL);
00048 bool IsSafeWaitingPosition(const Train *v, TileIndex tile, Trackdir trackdir, bool include_line_end, bool forbid_90deg = false);
00049 bool IsWaitingPositionFree(const Train *v, TileIndex tile, Trackdir trackdir, bool forbid_90deg = false);
00050
00051 Train *GetTrainForReservation(TileIndex tile, Track track);
00052
00060 static inline bool HasReservedTracks(TileIndex tile, TrackBits tracks)
00061 {
00062 return (GetReservedTrackbits(tile) & tracks) != TRACK_BIT_NONE;
00063 }
00064
00065 #endif