pbs.h
author celestar
Thu, 28 Jul 2005 09:17:32 +0000
changeset 2218 2132596a35c0
parent 2186 db48cf29b983
child 2436 7d5df545bd5d
permissions -rw-r--r--
(svn r2736) -Codechange: De-mystified GfxDrawFillRect a bit, and used enums from table/sprites.h. You can now change the number of bits used for sprites and switches in the SpriteSetup enum and the rest should work automagically. Can be used to increase the number of active sprites to 2^19 in case there are no colortables (recolor sprites) in any newgrf. We should possibly move the the colortables to an own list, but how to detect them in a newgrf.
/* $Id$ */

#ifndef PBS_H
#define PBS_H

/** @file pbs.h Path-Based-Signalling header file
 *  @see pbs.c */

#include "vehicle.h"
#include "map.h"
#include "rail.h"

/**
 * constants used for pbs_mode argument of npf-functions
 */
enum pbs_modes {
	PBS_MODE_NONE = 0,    // no pbs
	PBS_MODE_GREEN = 1,   // look for green exit signal from pbs block
	PBS_MODE_ANY = 2,     // look for any exit signal from block
};

/**
 * constants used for v->u.rail.pbs_status
 */
enum PBSStatus {
	PBS_STAT_NONE = 0,
	PBS_STAT_HAS_PATH = 1,
	PBS_STAT_NEED_PATH = 2,
};


void PBSReserveTrack(TileIndex tile, Track track);
/**<
 * Marks a track as reserved.
 * @param tile The tile of the track.
 * @param track The track to reserve, valid values 0-5.
 */

byte PBSTileReserved(TileIndex tile);
/**<
 * Check which tracks are reserved on a tile.
 * @param tile The tile which you want to check.
 * @return The tracks reserved on that tile, each of the bits 0-5 is set when the corresponding track is reserved.
 */

uint16 PBSTileUnavail(TileIndex tile);
/**<
 * Check which trackdirs are unavailable due to reserved tracks on a tile.
 * @param tile The tile which you want to check.
 * @return The tracks reserved on that tile, each of the bits 0-5,8-13 is set when the corresponding trackdir is unavailable.
 */

void PBSClearTrack(TileIndex tile, Track track);
/**<
 * Unreserves a track.
 * @param tile The tile of the track.
 * @param track The track to unreserve, valid values 0-5.
 */

void PBSClearPath(TileIndex tile, Trackdir trackdir, TileIndex end_tile, Trackdir end_trackdir);
/**<
 * Follows a planned(reserved) path, and unreserves the tracks.
 * @param tile The tile on which the path starts
 * @param trackdir The trackdirection in which the path starts
 * @param end_tile The tile on which the path ends
 * @param end_trackdir The trackdirection in which the path ends
 */

bool PBSIsPbsSignal(TileIndex tile, Trackdir trackdir);
/**<
 * Checks if there are pbs signals on a track.
 * @param tile The tile you want to check
 * @param trackdir The trackdir you want to check
 * @return True when there are pbs signals on that tile
 */

bool PBSIsPbsSegment(uint tile, Trackdir trackdir);
/**<
 * Checks if a signal/depot leads to a pbs block.
 * This means that the block needs to have at least 1 signal, and that all signals in it need to be pbs signals.
 * @param tile The tile to check
 * @param trackdir The direction in which to check
 * @return True when the depot is inside a pbs block
 */

#endif