OpenTTD Source: RoadStop Struct Reference

OpenTTD Source 14.1

Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Data Fields | Private Member Functions | Private Attributes
RoadStop Struct Reference

A Stop for a Road Vehicle. More...

`#include <roadstop_base.h>`

Inheritance diagram for RoadStop:

## Data Structures
struct | Entry
| Container for each entry point of a drive through road stop. More...

## Public Types
enum | RoadStopStatusFlags { RSSFB_BAY0_FREE = 0, RSSFB_BAY1_FREE = 1, RSSFB_BAY_COUNT = 2, RSSFB_BASE_ENTRY = 6, RSSFB_ENTRY_BUSY = 7 }
Public Types inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_roadstop_pool >
typedef struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > | Pool
| Type of the pool this item is going to be part of.

## Public Member Functions
| RoadStop (TileIndex tile=INVALID_TILE)
| Initializes a RoadStop.
| ~RoadStop ()
| De-Initializes RoadStops.
bool | HasFreeBay () const
| Checks whether there is a free bay in this road stop. More...
bool | IsFreeBay (uint nr) const
| Checks whether the given bay is free in this road stop. More...
bool | IsEntranceBusy () const
| Checks whether the entrance of the road stop is occupied by a vehicle. More...
void | SetEntranceBusy (bool busy)
| Makes an entrance occupied or free. More...
const Entry * | GetEntry (DiagDirection dir) const
| Get the drive through road stop entry struct for the given direction. More...
Entry * | GetEntry (DiagDirection dir)
| Get the drive through road stop entry struct for the given direction. More...
void | MakeDriveThrough ()
| Join this road stop to another 'base' road stop if possible; fill all necessary data to become an actual drive through road stop. More...
void | ClearDriveThrough ()
| Prepare for removal of this stop; update other neighbouring stops if needed. More...
void | Leave (RoadVehicle *rv)
| Leave the road stop. More...
bool | Enter (RoadVehicle *rv)
| Enter the road stop. More...
RoadStop * | GetNextRoadStop (const struct RoadVehicle *v) const
| Get the next road stop accessible by this vehicle. More...
Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_roadstop_pool >
void * | operator new (size_t size)
| Allocates space for new Titem. More...
void * | operator new (size_t size, size_t index)
| Allocates space for new Titem with given index. More...
void * | operator new (size_t, void *ptr)
| Allocates space for new Titem at given memory address. More...
void | operator delete (void *p)
| Marks Titem as free. More...

## Static Public Member Functions
static RoadStop * | GetByTile (TileIndex tile, RoadStopType type)
| Find a roadstop at given tile. More...
static bool | IsDriveThroughRoadStopContinuation (TileIndex rs, TileIndex next)
| Checks whether the 'next' tile is still part of the road same drive through stop 'rs' in the same direction for the same vehicle. More...
Static Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_roadstop_pool >
static bool | CanAllocateItem (size_t n=1)
| Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function() More...
static bool | CleaningPool ()
| Returns current state of pool cleaning - yes or no. More...
static bool | IsValidID (size_t index)
| Tests whether given index can be used to get valid (non-nullptr) Titem. More...
static Titem * | Get (size_t index)
| Returns Titem with given index. More...
static Titem * | GetIfValid (size_t index)
| Returns Titem with given index. More...
static size_t | GetPoolSize ()
| Returns first unused index. More...
static size_t | GetNumItems ()
| Returns number of valid items in the pool. More...
static void | PostDestructor ([[maybe_unused]] size_t index)
| Dummy function called after destructor of each member. More...
static Pool::IterateWrapper< Titem > | Iterate (size_t from=0)
| Returns an iterable ensemble of all valid Titem. More...

## Data Fields
TileIndex | xy
| Position on the map.
byte | status
| Current status of the Stop,. More...
struct RoadStop * | next
| Next stop of the given type at this station.
Data Fields inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_roadstop_pool >
Tindex | index
| Index of this pool item.

## Private Member Functions
uint | AllocateBay ()
| Allocates a bay. More...
void | AllocateDriveThroughBay (uint nr)
| Allocates a bay in a drive-through road stop. More...
void | FreeBay (uint nr)
| Frees the given bay. More...

## Private Attributes
Entry * | east
| The vehicles that entered from the east.
Entry * | west
| The vehicles that entered from the west.

## Detailed Description

A Stop for a Road Vehicle.

Definition at line 22 of file roadstop_base.h.

## Member Enumeration Documentation

## ◆ RoadStopStatusFlags

enum RoadStop::RoadStopStatusFlags

Enumerator
RSSFB_BAY0_FREE | Non-zero when bay 0 is free.
RSSFB_BAY1_FREE | Non-zero when bay 1 is free.
RSSFB_BAY_COUNT | Max. number of bays.
RSSFB_BASE_ENTRY | Non-zero when the entries on this road stop are the primary, i.e. the ones to delete.
RSSFB_ENTRY_BUSY | Non-zero when roadstop entry is busy.

Definition at line 23 of file roadstop_base.h.

## Member Function Documentation

## ◆ AllocateBay()

uint RoadStop::AllocateBay | ( |  | ) |
| inlineprivate

Allocates a bay.

Returns
  the allocated bay number

Precondition
  this->HasFreeBay()

Definition at line 158 of file roadstop_base.h.

References ClrBit(), HasBit(), and HasFreeBay().

Referenced by Enter().

## ◆ AllocateDriveThroughBay()

void RoadStop::AllocateDriveThroughBay | ( | uint | nr | ) |
| inlineprivate

Allocates a bay in a drive-through road stop.

Parameters

  nr | the number of the bay to allocate

Definition at line 174 of file roadstop_base.h.

References ClrBit(), and RSSFB_BAY_COUNT.

## ◆ ClearDriveThrough()

void RoadStop::ClearDriveThrough | ( |  | ) |

Prepare for removal of this stop; update other neighbouring stops if needed.

Also update the length etc.

Definition at line 130 of file roadstop.cpp.

References abs(), east, GetByTile(), GetRoadStopDir(), GetRoadStopType(), IsDriveThroughRoadStopContinuation(), TileOffsByDiagDir(), west, and xy.

## ◆ Enter()

bool RoadStop::Enter | ( | RoadVehicle * | rv | ) |

Enter the road stop.

Parameters

  rv | the vehicle that enters the stop

Returns
  whether the road stop could actually be entered

Definition at line 233 of file roadstop.cpp.

References AllocateBay(), Vehicle::direction, DirToDiagDir(), RoadStop::Entry::Enter(), GetEntry(), Vehicle::HasArticulatedPart(), HasFreeBay(), IsBayRoadStopTile(), IsEntranceBusy(), RVS_IN_DT_ROAD_STOP, RVS_IN_ROAD_STOP, RVS_USING_SECOND_BAY, SB(), SetBit(), SetEntranceBusy(), RoadVehicle::state, and xy.

## ◆ FreeBay()

void RoadStop::FreeBay | ( | uint | nr | ) |
| inlineprivate

Frees the given bay.

Parameters

  nr | the number of the bay to free

Definition at line 184 of file roadstop_base.h.

References RSSFB_BAY_COUNT, and SetBit().

Referenced by Leave().

## ◆ GetByTile()

RoadStop * RoadStop::GetByTile | ( | TileIndex | tile,
|  | RoadStopType | type
| ) |  |
| static

Find a roadstop at given tile.

Parameters

  tile | tile with roadstop
  type | roadstop type

Returns
  pointer to RoadStop

Precondition
  there has to be roadstop of given type there!

Definition at line 266 of file roadstop.cpp.

References SpecializedStation< Station, false >::GetByTile(), and next.

Referenced by ClearDriveThrough(), MakeDriveThrough(), CYapfCostRoadT< Types >::OneTileCost(), and RemoveRoadStop().

## ◆ GetEntry() [1/2]

Entry* RoadStop::GetEntry | ( | DiagDirection | dir | ) |
| inline

Get the drive through road stop entry struct for the given direction.

Parameters

  dir | The direction to get the entry for.

Returns
  the entry

Definition at line 132 of file roadstop_base.h.

References east, HasBit(), and west.

## ◆ GetEntry() [2/2]

const Entry* RoadStop::GetEntry | ( | DiagDirection | dir | ) | const
| inline

Get the drive through road stop entry struct for the given direction.

Parameters

  dir | The direction to get the entry for.

Returns
  the entry

Definition at line 122 of file roadstop_base.h.

References east, HasBit(), and west.

Referenced by Enter(), Leave(), and CYapfCostRoadT< Types >::OneTileCost().

## ◆ GetNextRoadStop()

RoadStop * RoadStop::GetNextRoadStop | ( | const struct RoadVehicle * | v | ) | const

Get the next road stop accessible by this vehicle.

Parameters

  v | the vehicle to get the next road stop for.

Returns
  the next road stop accessible.

Definition at line 42 of file roadstop.cpp.

References RoadVehicle::compatible_roadtypes, Vehicle::HasArticulatedPart(), HasTileAnyRoadType(), IsBayRoadStopTile(), and next.

## ◆ HasFreeBay()

bool RoadStop::HasFreeBay | ( |  | ) | const
| inline

Checks whether there is a free bay in this road stop.

Returns
  is at least one bay free?

Definition at line 83 of file roadstop_base.h.

References GB(), and RSSFB_BAY_COUNT.

Referenced by AllocateBay(), and Enter().

## ◆ IsDriveThroughRoadStopContinuation()

bool RoadStop::IsDriveThroughRoadStopContinuation | ( | TileIndex | rs,
|  | TileIndex | next
| ) |  |
| static

Checks whether the 'next' tile is still part of the road same drive through stop 'rs' in the same direction for the same vehicle.

Parameters

  rs | the road stop tile to check against
  next | the 'next' tile to check

Returns
  true if the 'next' tile is part of the road stop at 'next'.

Definition at line 305 of file roadstop.cpp.

References GetRoadStopDir(), GetStationIndex(), GetStationType(), IsDriveThroughStopTile(), IsTileType(), MP_STATION, and next.

Referenced by RoadStop::Entry::CheckIntegrity(), ClearDriveThrough(), MakeDriveThrough(), CYapfCostRoadT< Types >::OneTileCost(), and RoadStop::Entry::Rebuild().

## ◆ IsEntranceBusy()

bool RoadStop::IsEntranceBusy | ( |  | ) | const
| inline

Checks whether the entrance of the road stop is occupied by a vehicle.

Returns
  is entrance busy?

Definition at line 103 of file roadstop_base.h.

References HasBit(), and RSSFB_ENTRY_BUSY.

Referenced by Enter().

## ◆ IsFreeBay()

bool RoadStop::IsFreeBay | ( | uint | nr | ) | const
| inline

Checks whether the given bay is free in this road stop.

Parameters

  nr | bay to check

Returns
  is given bay free?

Definition at line 93 of file roadstop_base.h.

References HasBit(), and RSSFB_BAY_COUNT.

Referenced by CYapfCostRoadT< Types >::OneTileCost().

## ◆ Leave()

void RoadStop::Leave | ( | RoadVehicle * | rv | ) |

Leave the road stop.

Parameters

  rv | the vehicle that leaves the stop

Definition at line 216 of file roadstop.cpp.

References Vehicle::direction, DirToDiagDir(), FreeBay(), GetEntry(), HasBit(), IsBayRoadStopTile(), RoadStop::Entry::Leave(), RVS_USING_SECOND_BAY, SetEntranceBusy(), RoadVehicle::state, and Vehicle::tile.

## ◆ MakeDriveThrough()

void RoadStop::MakeDriveThrough | ( |  | ) |

Join this road stop to another 'base' road stop if possible; fill all necessary data to become an actual drive through road stop.

Also update the length etc.

Definition at line 62 of file roadstop.cpp.

References abs(), ClrBit(), east, GetByTile(), GetRoadStopDir(), GetRoadStopType(), IsDriveThroughRoadStopContinuation(), RoadStop::Entry::length, RoadStop::Entry::occupied, RSSFB_BASE_ENTRY, SetBit(), status, TILE_SIZE, TileOffsByDiagDir(), west, and xy.

## ◆ SetEntranceBusy()

void RoadStop::SetEntranceBusy | ( | bool | busy | ) |
| inline

Makes an entrance occupied or free.

Parameters

  busy | If true, marks busy; free otherwise.

Definition at line 112 of file roadstop_base.h.

References RSSFB_ENTRY_BUSY, and SB().

Referenced by Enter(), and Leave().

## Field Documentation

## ◆ status

byte RoadStop::status

Current status of the Stop,.

See also
  RoadStopSatusFlag. Access using *Bay and *Busy functions.

Definition at line 68 of file roadstop_base.h.

Referenced by RoadStop::Entry::CheckIntegrity(), MakeDriveThrough(), and RoadStop::Entry::Rebuild().

The documentation for this struct was generated from the following files:

- src/roadstop_base.h
- src/roadstop.cpp