src/pbs.h
author rubidium
Mon, 15 Dec 2008 22:22:23 +0000
changeset 10425 4a880a6ab2ac
parent 10083 eee4e42aa15b
permissions -rw-r--r--
(svn r14678) -Fix [FS#2435]: gradual filling graphics were not chosen according to the NewGRF spec (Maedhros)
9786
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
     1
/* $Id$ */
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
     2
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
     3
/** @file pbs.h PBS support routines */
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
     4
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
     5
#ifndef PBS_H
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
     6
#define PBS_H
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
     7
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
     8
#include "tile_type.h"
9787
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
     9
#include "direction_type.h"
9786
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
    10
#include "track_type.h"
9798
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    11
#include "vehicle_type.h"
9786
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
    12
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
    13
TrackBits GetReservedTrackbits(TileIndex t);
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
    14
9787
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    15
void SetRailwayStationPlatformReservation(TileIndex start, DiagDirection dir, bool b);
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    16
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    17
bool TryReserveRailTrack(TileIndex tile, Track t);
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    18
void UnreserveRailTrack(TileIndex tile, Track t);
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    19
9798
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    20
/** This struct contains information about the end of a reserved path. */
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    21
struct PBSTileInfo {
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    22
	TileIndex tile;      ///< Tile the path ends, INVALID_TILE if no valid path was found.
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    23
	Trackdir  trackdir;  ///< The reserved trackdir on the tile.
10027
c2e1b560b17c (svn r14186) -Fix [FS#2255]: small typo (Jafinto)
rubidium
parents: 9831
diff changeset
    24
	bool      okay;      ///< True if tile is a safe waiting position, false otherwise.
9798
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    25
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    26
	PBSTileInfo() : tile(INVALID_TILE), trackdir(INVALID_TRACKDIR), okay(false) {}
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    27
	PBSTileInfo(TileIndex _t, Trackdir _td, bool _okay) : tile(_t), trackdir(_td), okay(_okay) {}
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    28
};
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    29
10083
eee4e42aa15b (svn r14258) -Codechange: rework the way to query the vehicle hash to make sure it always results in the same irregardless of the order of the hash-linked-list.
rubidium
parents: 10027
diff changeset
    30
PBSTileInfo FollowTrainReservation(const Vehicle *v, bool *train_on_res = NULL);
9798
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    31
bool IsSafeWaitingPosition(const Vehicle *v, TileIndex tile, Trackdir trackdir, bool include_line_end, bool forbid_90deg = false);
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    32
bool IsWaitingPositionFree(const Vehicle *v, TileIndex tile, Trackdir trackdir, bool forbid_90deg = false);
4b8cdc1adf4b (svn r13940) -Add [YAPP]: YAPF is now able to reserve the found path. (michi_cc)
rubidium
parents: 9787
diff changeset
    33
9814
19720a320565 (svn r13956) -Add [YAPP]: Function for getting the train holding a reserved path. (michi_cc)
rubidium
parents: 9798
diff changeset
    34
Vehicle *GetTrainForReservation(TileIndex tile, Track track);
19720a320565 (svn r13956) -Add [YAPP]: Function for getting the train holding a reserved path. (michi_cc)
rubidium
parents: 9798
diff changeset
    35
9787
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    36
/**
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    37
 * Check whether some of tracks is reserved on a tile.
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    38
 *
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    39
 * @param tile the tile
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    40
 * @param tracks the tracks to test
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    41
 * @return true if at least on of tracks is reserved
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    42
 */
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    43
static inline bool HasReservedTracks(TileIndex tile, TrackBits tracks)
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    44
{
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    45
	return (GetReservedTrackbits(tile) & tracks) != TRACK_BIT_NONE;
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    46
}
cedb26977f52 (svn r13929) -Codechange [YAPP]: Reserving and unreserving of single tracks is now possible. (michi_cc)
rubidium
parents: 9786
diff changeset
    47
9786
0169b327f3d2 (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
rubidium
parents:
diff changeset
    48
#endif /* PBS_H */