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 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.
bool | IsFreeBay (uint nr) const
| Checks whether the given bay is free in this road stop.
bool | IsEntranceBusy () const
| Checks whether the entrance of the road stop is occupied by a vehicle.
void | SetEntranceBusy (bool busy)
| Makes an entrance occupied or free.
const Entry * | GetEntry (DiagDirection dir) const
| Get the drive through road stop entry struct for the given direction.
Entry * | GetEntry (DiagDirection dir)
| Get the drive through road stop entry struct for the given direction.
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.
void | ClearDriveThrough ()
| Prepare for removal of this stop; update other neighbouring stops if needed.
void | Leave (RoadVehicle *rv)
| Leave the road stop.
bool | Enter (RoadVehicle *rv)
| Enter the road stop.
RoadStop * | GetNextRoadStop (const struct RoadVehicle *v) const
## Static Public Member Functions
static RoadStop * | GetByTile (TileIndex tile, RoadStopType type)
| Find a roadstop at given tile.
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.
## Data Fields
TileIndex | xy
| Position on the map.
byte | status
| Current status of the Stop,.
struct RoadStop * | next
| Next stop of the given type at this station.
## Private Member Functions
uint | AllocateBay ()
| Allocates a bay.
void | AllocateDriveThroughBay (uint nr)
| Allocates a bay in a drive-through road stop.
void | FreeBay (uint nr)
| Frees the given bay.
## 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 24 of file roadstop_base.h.

## Member Enumeration Documentation

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 25 of file roadstop_base.h.

## Member Function Documentation

uint RoadStop::AllocateBay | ( |  | ) | `[inline, private]`

Allocates a bay.

Returns:
  the allocated bay number

Precondition:
  this->HasFreeBay()

Definition at line 160 of file roadstop_base.h.

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

Referenced by Enter().

void RoadStop::AllocateDriveThroughBay | ( | uint | nr | ) | `[inline, private]`

Allocates a bay in a drive-through road stop.

Parameters:

  | nr | the number of the bay to allocate

Definition at line 176 of file roadstop_base.h.

References ClrBit(), RSSFB_BAY_COUNT, and status.

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(), ClrBit(), east, GetByTile(), GetRoadStopDir(), GetRoadStopType(), HasBit(), IsDriveThroughRoadStopContinuation(), RoadStop::Entry::length, RoadStop::Entry::Rebuild(), RSSFB_BASE_ENTRY, SetBit(), status, TILE_SIZE, TileOffsByDiagDir(), west, and xy.

Referenced by RemoveRoadStop().

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(), IsEntranceBusy(), IsStandardRoadStopTile(), RVS_IN_DT_ROAD_STOP, RVS_IN_ROAD_STOP, RVS_USING_SECOND_BAY, SB(), SetBit(), SetEntranceBusy(), RoadVehicle::state, and xy.

void RoadStop::FreeBay | ( | uint | nr | ) | `[inline, private]`

Frees the given bay.

Parameters:

  | nr | the number of the bay to free

Definition at line 186 of file roadstop_base.h.

References RSSFB_BAY_COUNT, SetBit(), and status.

Referenced by Leave().

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 next.

Referenced by ClearDriveThrough(), RoadVehicle::Crash(), DeleteLastRoadVeh(), MakeDriveThrough(), Vehicle::PreDestructor(), RemoveRoadStop(), and RoadFindPathToDest().

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 124 of file roadstop_base.h.

References east, HasBit(), and west.

Referenced by AfterLoadRoadStops(), CheckCaches(), Enter(), and Leave().

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 134 of file roadstop_base.h.

References east, HasBit(), and west.

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 85 of file roadstop_base.h.

References GB(), RSSFB_BAY_COUNT, and status.

Referenced by AllocateBay(), and Enter().

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(), and MP_STATION.

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

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 105 of file roadstop_base.h.

References HasBit(), RSSFB_ENTRY_BUSY, and status.

Referenced by Enter().

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 95 of file roadstop_base.h.

References HasBit(), RSSFB_BAY_COUNT, and status.

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(), IsStandardRoadStopTile(), RoadStop::Entry::Leave(), RVS_USING_SECOND_BAY, SetEntranceBusy(), RoadVehicle::state, and Vehicle::tile.

Referenced by RoadVehicle::Crash(), DeleteLastRoadVeh(), and Vehicle::PreDestructor().

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.

Referenced by AfterLoadRoadStops(), and CmdBuildRoadStop().

void RoadStop::SetEntranceBusy | ( | bool | busy | ) | `[inline]`

Makes an entrance occupied or free.

Parameters:

  | busy | If true, marks busy; free otherwise.

Definition at line 114 of file roadstop_base.h.

References RSSFB_ENTRY_BUSY, SB(), and status.

Referenced by Enter(), and Leave().

## Field Documentation

byte RoadStop::status

Current status of the Stop,.

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

Definition at line 70 of file roadstop_base.h.

Referenced by AfterLoadRoadStops(), AllocateBay(), AllocateDriveThroughBay(), RoadStop::Entry::CheckIntegrity(), ClearDriveThrough(), FreeBay(), HasFreeBay(), IsEntranceBusy(), IsFreeBay(), MakeDriveThrough(), RoadStop::Entry::Rebuild(), and SetEntranceBusy().

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

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