pbs.cpp File Reference

#include "stdafx.h"
#include "pbs.h"
#include "functions.h"
#include "vehicle_func.h"
#include "yapf/follow_track.hpp"

Go to the source code of this file.

Data Structures

struct  FindTrainOnTrackInfo
 Helper struct for finding the best matching vehicle on a specific track. More...

Functions

TrackBits GetReservedTrackbits (TileIndex t)
 Get the reserved trackbits for any tile, regardless of type.
void SetRailwayStationPlatformReservation (TileIndex start, DiagDirection dir, bool b)
 Set the reservation for a complete station platform.
bool TryReserveRailTrack (TileIndex tile, Track t)
 Try to reserve a specific track on a tile.
void UnreserveRailTrack (TileIndex tile, Track t)
 Lift the reservation of a specific track on a tile.
static PBSTileInfo FollowReservation (Owner o, RailTypes rts, TileIndex tile, Trackdir trackdir, bool ignore_oneway=false)
 Follow a reservation starting from a specific tile to the end.
static Vehicle * FindTrainOnTrackEnum (Vehicle *v, void *data)
 Callback for Has/FindVehicleOnPos to find a train on a specific track.
PBSTileInfo FollowTrainReservation (const Vehicle *v, bool *train_on_res)
 Follow a train reservation to the last tile.
Vehicle * GetTrainForReservation (TileIndex tile, Track track)
 Find the train which has reserved a specific path.
bool IsSafeWaitingPosition (const Vehicle *v, TileIndex tile, Trackdir trackdir, bool include_line_end, bool forbid_90deg)
 Determine whether a certain track on a tile is a safe position to end a path.
bool IsWaitingPositionFree (const Vehicle *v, TileIndex tile, Trackdir trackdir, bool forbid_90deg)
 Check if a safe position is free.


Detailed Description

Definition in file pbs.cpp.


Function Documentation

static Vehicle* FindTrainOnTrackEnum ( Vehicle *  v,
void *  data 
) [static]

Callback for Has/FindVehicleOnPos to find a train on a specific track.

Definition at line 232 of file pbs.cpp.

References FindTrainOnTrackInfo::best, HasBit(), FindTrainOnTrackInfo::res, PBSTileInfo::trackdir, and TrackdirToTrack().

Referenced by FollowTrainReservation(), and GetTrainForReservation().

static PBSTileInfo FollowReservation ( Owner  o,
RailTypes  rts,
TileIndex  tile,
Trackdir  trackdir,
bool  ignore_oneway = false 
) [static]

PBSTileInfo FollowTrainReservation ( const Vehicle *  v,
bool *  train_on_res 
)

Follow a train reservation to the last tile.

Parameters:
v the vehicle
train_on_res Is set to a train we might encounter
Returns:
The last tile of the reservation or the current train tile if no reservation present.

Definition at line 254 of file pbs.cpp.

References _settings_game, RailtypeInfo::compatible_railtypes, FindTrainOnTrackEnum(), FollowReservation(), PathfinderSettings::forbid_90_deg, GetRailDepotReservation(), GetRailTypeInfo(), GetVehicleTrackdir(), HasVehicleOnPos(), IsRailDepotTile(), IsSafeWaitingPosition(), PBSTileInfo::okay, GameSettings::pf, FindTrainOnTrackInfo::res, PBSTileInfo::tile, and PBSTileInfo::trackdir.

Referenced by DoTrainPathfind(), ExtendTrainReservation(), FindClosestTrainDepot(), TryPathReserve(), and YapfFindNearestRailDepotTwoWay().

TrackBits GetReservedTrackbits ( TileIndex  t  ) 

Get the reserved trackbits for any tile, regardless of type.

Parameters:
t the tile
Returns:
the reserved trackbits. TRACK_BIT_NONE on nothing reserved or a tile without rail.

Definition at line 16 of file pbs.cpp.

References GetRailCrossingReservation(), GetRailStationReservation(), GetRailTunnelBridgeReservation(), GetRailWaypointReservation(), GetTileType(), GetTrackReservation(), GetTunnelBridgeTransportType(), IsPlainRailTile(), IsRailDepot(), IsRailWaypoint(), MP_RAILWAY, MP_ROAD, MP_STATION, MP_TUNNELBRIDGE, TRACK_BIT_NONE, and TRANSPORT_RAIL.

Referenced by CmdConvertRail(), FollowReservation(), FreeTrainTrackReservation(), HasReservedTracks(), IsWaitingPositionFree(), and TryPathReserve().

Vehicle* GetTrainForReservation ( TileIndex  tile,
Track  track 
)

bool IsSafeWaitingPosition ( const Vehicle *  v,
TileIndex  tile,
Trackdir  trackdir,
bool  include_line_end,
bool  forbid_90deg 
)

bool IsWaitingPositionFree ( const Vehicle *  v,
TileIndex  tile,
Trackdir  trackdir,
bool  forbid_90deg 
)

void SetRailwayStationPlatformReservation ( TileIndex  start,
DiagDirection  dir,
bool  b 
)

Set the reservation for a complete station platform.

Precondition:
IsRailwayStationTile(start)
Parameters:
start starting tile of the platform
dir the direction in which to follow the platform
b the state the reservation should be set to

Definition at line 49 of file pbs.cpp.

References DiagDirToAxis(), MarkTileDirtyByTile(), SetRailwayStationReservation(), TILE_ADD, and TileOffsByDiagDir().

Referenced by ClearPathReservation(), CmdBuildRailroadStation(), CmdRemoveFromRailroadStation(), and NPFSaveTargetData().

bool TryReserveRailTrack ( TileIndex  tile,
Track  t 
)

void UnreserveRailTrack ( TileIndex  tile,
Track  t 
)


Generated on Wed Jul 15 20:36:09 2009 for OpenTTD by  doxygen 1.5.6