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);
00025 void UnreserveRailTrack(TileIndex tile, Track t);
00026
00028 struct PBSTileInfo {
00029 TileIndex tile;
00030 Trackdir trackdir;
00031 bool okay;
00032
00033 PBSTileInfo() : tile(INVALID_TILE), trackdir(INVALID_TRACKDIR), okay(false) {}
00034 PBSTileInfo(TileIndex _t, Trackdir _td, bool _okay) : tile(_t), trackdir(_td), okay(_okay) {}
00035 };
00036
00037 PBSTileInfo FollowTrainReservation(const Train *v, Vehicle **train_on_res = NULL);
00038 bool IsSafeWaitingPosition(const Train *v, TileIndex tile, Trackdir trackdir, bool include_line_end, bool forbid_90deg = false);
00039 bool IsWaitingPositionFree(const Train *v, TileIndex tile, Trackdir trackdir, bool forbid_90deg = false);
00040
00041 Train *GetTrainForReservation(TileIndex tile, Track track);
00042
00050 static inline bool HasReservedTracks(TileIndex tile, TrackBits tracks)
00051 {
00052 return (GetReservedTrackbits(tile) & tracks) != TRACK_BIT_NONE;
00053 }
00054
00055 #endif