# pbs.h

Go to the documentation of this file.

    00001 /* $Id: pbs.h 18647 2009-12-27 14:37:50Z michi_cc $ */
    00002
    00003 /*
    00004  * This file is part of OpenTTD.
    00005  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
    00006  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    00007  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
    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 /* PBS_H */