pathfind.cpp File Reference

Implementation of the oldest supported pathfinder. More...

#include "stdafx.h"
#include "station_map.h"
#include "settings_type.h"
#include "pathfind.h"
#include "debug.h"
#include "tunnelbridge_map.h"
#include "core/random_func.hpp"
#include "core/alloc_type.hpp"
#include "tunnelbridge.h"

Go to the source code of this file.

Data Structures

struct  StackedItem
struct  HashLink
struct  NewTrackPathFinder

Defines

#define NTP_GET_LINK_OFFS(tpf, link)   ((byte*)(link) - (byte*)tpf->links)
#define NTP_GET_LINK_PTR(tpf, link_offs)   (HashLink*)((byte*)tpf->links + (link_offs))
#define ARR(i)   tpf->stack[(i)-1]

Functions

static bool TPFSetTileBit (TrackPathFinder *tpf, TileIndex tile, int dir)
static void TPFModeShip (TrackPathFinder *tpf, TileIndex tile, DiagDirection direction)
static bool CanAccessTileInDir (TileIndex tile, DiagDirection side, TransportType tracktype)
 Checks if any vehicle can enter/leave tile in given diagdir Checks only for rail/road depots and road non-drivethrough stations.
static void TPFModeNormal (TrackPathFinder *tpf, TileIndex tile, DiagDirection direction)
void FollowTrack (TileIndex tile, PathfindFlags flags, TransportType tt, uint sub_type, DiagDirection direction, TPFEnumProc *enum_proc, TPFAfterProc *after_proc, void *data)
static void HeapifyUp (NewTrackPathFinder *tpf)
 called after a new element was added in the queue at the last index.
static void HeapifyDown (NewTrackPathFinder *tpf)
 called after the element 0 was eaten.
static bool NtpVisit (NewTrackPathFinder *tpf, TileIndex tile, DiagDirection dir, uint length)
 mark a tile as visited and store the length of the path.
static bool NtpCheck (NewTrackPathFinder *tpf, TileIndex tile, uint dir, uint length)
 Checks if the shortest path to the given tile/dir so far is still the given length.
static uint DistanceMoo (TileIndex t0, TileIndex t1)
static void NTPEnum (NewTrackPathFinder *tpf, TileIndex tile, DiagDirection direction)
void NewTrainPathfind (TileIndex tile, TileIndex dest, RailTypes railtypes, DiagDirection direction, NTPEnumProc *enum_proc, void *data)
 new pathfinder for trains.

Variables

static const byte _length_of_track [16]


Detailed Description

Implementation of the oldest supported pathfinder.

Definition in file pathfind.cpp.


Function Documentation

static bool CanAccessTileInDir ( TileIndex  tile,
DiagDirection  side,
TransportType  tracktype 
) [inline, static]

Checks if any vehicle can enter/leave tile in given diagdir Checks only for rail/road depots and road non-drivethrough stations.

Parameters:
tile tile to check
side side of tile we are trying to leave/enter
tracktype type of transport
Precondition:
tile has trackbit at that diagdir
Returns:
true iff vehicle can enter/leve the tile in given side

Definition at line 180 of file pathfind.cpp.

References GetRailDepotDirection(), GetRoadStopDir(), IsRailDepotTile(), TRANSPORT_RAIL, and TRANSPORT_ROAD.

static void HeapifyDown ( NewTrackPathFinder *  tpf  )  [inline, static]

called after the element 0 was eaten.

fill it with a new element

Definition at line 361 of file pathfind.cpp.

static void HeapifyUp ( NewTrackPathFinder *  tpf  )  [inline, static]

called after a new element was added in the queue at the last index.

move it down to the proper position

Definition at line 347 of file pathfind.cpp.

void NewTrainPathfind ( TileIndex  tile,
TileIndex  dest,
RailTypes  railtypes,
DiagDirection  direction,
NTPEnumProc *  enum_proc,
void *  data 
)

new pathfinder for trains.

better and faster.

Definition at line 785 of file pathfind.cpp.

References _settings_game, lengthof, min(), PathfinderSettings::opf, GameSettings::pf, OPFSettings::pf_maxlength, and TRANSPORT_RAIL.

Referenced by DoTrainPathfind(), and FindClosestTrainDepot().

static bool NtpCheck ( NewTrackPathFinder *  tpf,
TileIndex  tile,
uint  dir,
uint  length 
) [static]

Checks if the shortest path to the given tile/dir so far is still the given length.

Returns:
true if the length is still the same
Precondition:
The given tile/dir combination should be present in the hash, by a previous call to NtpVisit().

Definition at line 479 of file pathfind.cpp.

static bool NtpVisit ( NewTrackPathFinder *  tpf,
TileIndex  tile,
DiagDirection  dir,
uint  length 
) [static]

mark a tile as visited and store the length of the path.

if we already had a better path to this tile, return false. otherwise return true.

Definition at line 393 of file pathfind.cpp.


Variable Documentation

const byte _length_of_track[16] [static]

Initial value:

 {
  DIAG_FACTOR, DIAG_FACTOR, STR_FACTOR, STR_FACTOR, STR_FACTOR, STR_FACTOR, 0, 0,
  DIAG_FACTOR, DIAG_FACTOR, STR_FACTOR, STR_FACTOR, STR_FACTOR, STR_FACTOR, 0, 0
}

Definition at line 526 of file pathfind.cpp.


Generated on Wed Apr 1 14:38:17 2009 for OpenTTD by  doxygen 1.5.6