OpenTTD Source: Station Struct Reference

OpenTTD Source 14.0-beta3

Public Member Functions | Static Public Member Functions | Data Fields
Station Struct Referencefinal

Station data structure. More...

`#include <station_base.h>`

Inheritance diagram for Station:

## Public Member Functions
RoadStop * | GetPrimaryRoadStop (RoadStopType type) const
RoadStop * | GetPrimaryRoadStop (const struct RoadVehicle *v) const
| Station (TileIndex tile=INVALID_TILE)
| ~Station ()
| Clean up a station by clearing vehicle orders, invalidating windows and removing link stats. More...
void | AddFacility (StationFacility new_facility_bit, TileIndex facil_xy)
| Called when new facility is built on the station. More...
void | MarkTilesDirty (bool cargo_change) const
| Marks the tiles of the station as dirty.
void | UpdateVirtCoord () override
| Update the virtual coords needed to draw the station sign.
void | MoveSign (TileIndex new_xy) override
| Move the station main coordinate somewhere else. More...
void | AfterStationTileSetChange (bool adding, StationType type)
| After adding/removing tiles to station, update some station-related stuff. More...
uint | GetPlatformLength (TileIndex tile, DiagDirection dir) const override
| Determines the REMAINING length of a platform, starting at (and including) the given tile. More...
uint | GetPlatformLength (TileIndex tile) const override
| Obtain the length of a platform. More...
void | RecomputeCatchment (bool no_clear_nearby_lists=false)
| Recompute tiles covered in our catchment area. More...
uint | GetCatchmentRadius () const
| Determines the catchment radius of the station. More...
Rect | GetCatchmentRect () const
| Determines catchment rectangle of this station. More...
bool | CatchmentCoversTown (TownID t) const
| Test if the given town ID is covered by our catchment area. More...
void | AddIndustryToDeliver (Industry *ind, TileIndex tile)
| Add nearby industry to station's industries_near list if it accepts cargo. More...
void | RemoveIndustryToDeliver (Industry *ind)
| Remove nearby industry from station's industries_near list. More...
void | RemoveFromAllNearbyLists ()
| Remove this station from the nearby stations lists of all towns and industries.
bool | TileIsInCatchment (TileIndex tile) const
bool | TileBelongsToRailStation (TileIndex tile) const override
| Check whether a specific tile belongs to this station. More...
bool | TileBelongsToRoadStop (TileIndex tile) const
bool | TileBelongsToAirport (TileIndex tile) const
uint32_t | GetNewGRFVariable (const ResolverObject &object, byte variable, byte parameter, bool *available) const override
void | GetTileArea (TileArea *ta, StationType type) const override
| Get the tile area for a given station type. More...
Public Member Functions inherited from SpecializedStation< Station, false >
| SpecializedStation (TileIndex tile)
| Set station type correctly. More...
Public Member Functions inherited from BaseStation
| BaseStation (TileIndex tile)
| Initialize the base station. More...
virtual uint32_t | GetNewGRFVariable (const struct ResolverObject &object, byte variable, byte parameter, bool *available) const =0
| Helper function to get a NewGRF variable that isn't implemented by the base class. More...
const std::string & | GetCachedName () const
bool | IsInUse () const
| Check whether the base station currently is in use; in use means that it is not scheduled for deletion and that it still has some facilities left. More...
byte | GetRoadStopRandomBits (TileIndex tile) const
byte | GetRoadStopAnimationFrame (TileIndex tile) const
void | SetRoadStopRandomBits (TileIndex tile, byte random_bits)
void | SetRoadStopAnimationFrame (TileIndex tile, byte frame)
void | RemoveRoadStopTileData (TileIndex tile)
Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_station_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 void | RecomputeCatchmentForAll ()
| Recomputes catchment of all stations. More...
Static Public Member Functions inherited from SpecializedStation< Station, false >
static bool | IsExpected (const BaseStation *st)
| Helper for checking whether the given station is of this type. More...
static bool | IsValidID (size_t index)
| Tests whether given index is a valid index for station of this type. More...
static Station * | Get (size_t index)
| Gets station with given index. More...
static Station * | GetIfValid (size_t index)
| Returns station if the index is a valid index for this station type. More...
static Station * | GetByTile (TileIndex tile)
| Get the station belonging to a specific tile. More...
static Station * | From (BaseStation *st)
| Converts a BaseStation to SpecializedStation with type checking. More...
static const Station * | From (const BaseStation *st)
| Converts a const BaseStation to const SpecializedStation with type checking. More...
static Pool::IterateWrapper< Station > | Iterate (size_t from=0)
| Returns an iterable ensemble of all valid stations of type T. More...
Static Public Member Functions inherited from BaseStation
static BaseStation * | GetByTile (TileIndex tile)
| Get the base station belonging to a specific tile. More...
static void | PostDestructor (size_t index)
| Invalidating of the JoinStation window has to be done after removing item from the pool.
Static Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_station_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
RoadStop * | bus_stops
| All the road stops.
TileArea | bus_station
| Tile area the bus 'station' part covers.
RoadStop * | truck_stops
| All the truck stops.
TileArea | truck_station
| Tile area the truck 'station' part covers.
Airport | airport
| Tile area the airport covers.
TileArea | ship_station
| Tile area the ship 'station' part covers.
TileArea | docking_station
| Tile area the docking tiles cover.
IndustryType | indtype
| Industry type to get the name from.
BitmapTileArea | catchment_tiles
| NOSAVE: Set of individual tiles covered by catchment area.
StationHadVehicleOfType | had_vehicle_of_type
byte | time_since_load
byte | time_since_unload
byte | last_vehicle_type
std::list< Vehicle * > | loading_vehicles
GoodsEntry | goods [NUM_CARGO]
| Goods at this station.
CargoTypes | always_accepted
| Bitmask of always accepted cargo types (by houses, HQs, industry tiles when industry doesn't accept cargo)
IndustryList | industries_near
| Cached list of industries near the station that can accept cargo,. More...
Industry * | industry
| NOSAVE: Associated industry for neutral stations. (Rebuilt on load from Industry->st)
Data Fields inherited from BaseStation
TileIndex | xy
| Base tile of the station.
TrackedViewportSign | sign
| NOSAVE: Dimensions of sign.
byte | delete_ctr
| Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted.
std::string | name
| Custom name.
StringID | string_id
| Default name (town area) of station.
std::string | cached_name
| NOSAVE: Cache of the resolved name of the station, if not using a custom name.
Town * | town
| The town this station is associated with.
Owner | owner
| The owner of this station.
StationFacility | facilities
| The facilities that this station has.
std::vector< StationSpecList > | speclist
| List of rail station specs of this station.
std::vector< RoadStopSpecList > | roadstop_speclist
| List of road stop specs of this station.
TimerGameCalendar::Date | build_date
| Date of construction.
uint16_t | random_bits
| Random bits assigned to this station.
byte | waiting_triggers
| Waiting triggers (NewGRF) for this station.
uint8_t | cached_anim_triggers
| NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen.
uint8_t | cached_roadstop_anim_triggers
| NOSAVE: Combined animation trigger bitmask for road stops, used to determine if trigger processing should happen.
CargoTypes | cached_cargo_triggers
| NOSAVE: Combined cargo trigger bitmask.
CargoTypes | cached_roadstop_cargo_triggers
| NOSAVE: Combined cargo trigger bitmask for road stops.
TileArea | train_station
| Tile area the train 'station' part covers.
StationRect | rect
| NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions.
std::vector< RoadStopTileData > | custom_roadstop_tile_data
| List of custom road stop tile data.
Data Fields inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_station_pool >
Tindex | index
| Index of this pool item.

## Additional Inherited Members
Public Types inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_station_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.
Static Public Attributes inherited from SpecializedStation< Station, false >
static const StationFacility | EXPECTED_FACIL
| Specialized type.

## Detailed Description

Station data structure.

Definition at line 442 of file station_base.h.

## Constructor & Destructor Documentation

## ◆ ~Station()

Station::~Station | ( |  | ) |

Clean up a station by clearing vehicle orders, invalidating windows and removing link stats.

Aircraft-Hangar orders need special treatment here, as the hangars are actually part of a station (tiletype is STATION), but the order type is OT_GOTO_DEPOT.

Definition at line 83 of file station.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_station_pool >::CleaningPool(), goods, and SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::Iterate().

## Member Function Documentation

## ◆ AddFacility()

void Station::AddFacility | ( | StationFacility | new_facility_bit,
|  | TileIndex | facil_xy
| ) |  |

Called when new facility is built on the station.

If it is the first facility it initializes also 'xy' and 'random_bits' members

Definition at line 227 of file station.cpp.

References FACIL_NONE, BaseStation::facilities, MoveSign(), and BaseStation::random_bits.

## ◆ AddIndustryToDeliver()

void Station::AddIndustryToDeliver | ( | Industry * | ind,
|  | TileIndex | tile
| ) |  |

Add nearby industry to station's industries_near list if it accepts cargo.

For industries that are already on the list update distance if it's closer.

Parameters

  ind | Industry
  tile | Tile of the industry to measure distance to.

Definition at line 390 of file station.cpp.

References DistanceMax(), industries_near, Industry::IsCargoAccepted(), and BaseStation::xy.

Referenced by RecomputeCatchment().

## ◆ AfterStationTileSetChange()

void Station::AfterStationTileSetChange | ( | bool | adding,
|  | StationType | type
| ) |  |

After adding/removing tiles to station, update some station-related stuff.

Parameters

  adding | True if adding tiles, false if removing them.
  type | StationType being modified.

Definition at line 749 of file station_cmd.cpp.

References DirtyCompanyInfrastructureWindows(), BaseStation::owner, RecomputeCatchment(), and UpdateVirtCoord().

## ◆ CatchmentCoversTown()

bool Station::CatchmentCoversTown | ( | TownID | t | ) | const

Test if the given town ID is covered by our catchment area.

This is used when removing a house tile to determine if it was the last house tile within our catchment.

Parameters

  t | TownID to test.

Returns
  true if at least one house tile of TownID is covered.

Definition at line 441 of file station.cpp.

References catchment_tiles, GetTownIndex(), INVALID_TILE, IsTileType(), and MP_HOUSE.

## ◆ GetCatchmentRadius()

uint Station::GetCatchmentRadius | ( |  | ) | const

Determines the catchment radius of the station.

Returns
  The radius

Definition at line 344 of file station.cpp.

References _settings_game, airport, bus_stops, CA_BUS, CA_DOCK, CA_NONE, CA_TRAIN, CA_TRUCK, CA_UNMODIFIED, AirportSpec::catchment, Airport::GetSpec(), INVALID_TILE, StationSettings::modified_catchment, ship_station, GameSettings::station, OrthogonalTileArea::tile, BaseStation::train_station, and truck_stops.

Referenced by GetCatchmentRect().

## ◆ GetCatchmentRect()

Rect Station::GetCatchmentRect | ( |  | ) | const

Determines catchment rectangle of this station.

Returns
  clamped catchment rectangle

Definition at line 367 of file station.cpp.

References GetCatchmentRadius(), Map::MaxX(), Map::MaxY(), and BaseStation::rect.

Referenced by RecomputeCatchment().

## ◆ GetPlatformLength() [1/2]

uint Station::GetPlatformLength | ( | TileIndex | tile | ) | const
| overridevirtual

Obtain the length of a platform.

Precondition
  tile must be a rail station tile

Parameters

  tile | A tile that contains the platform in question

Returns
  The length of the platform

Implements BaseStation.

Definition at line 270 of file station.cpp.

References AXIS_X, GetRailStationAxis(), IsCompatibleTrainStationTile(), TileBelongsToRailStation(), and TileDiffXY().

## ◆ GetPlatformLength() [2/2]

uint Station::GetPlatformLength | ( | TileIndex | tile,
|  | DiagDirection | dir
| ) |  | const
| overridevirtual

Determines the REMAINING length of a platform, starting at (and including) the given tile.

Parameters

  tile | the tile from which to start searching. Must be a rail station tile
  dir | The direction in which to search.

Returns
  The platform length

Implements BaseStation.

Definition at line 292 of file station.cpp.

References DIAGDIR_END, IsCompatibleTrainStationTile(), IsRailStationTile(), and TileOffsByDiagDir().

Referenced by GetTrainStopLocation(), NPFSaveTargetData(), and UpdateLoadUnloadTicks().

## ◆ GetTileArea()

void Station::GetTileArea | ( | TileArea * | ta,
|  | StationType | type
| ) |  | const
| overridevirtual

Get the tile area for a given station type.

Parameters

  ta | tile area to fill.
  type | the type of the area

Implements BaseStation.

Definition at line 407 of file station_cmd.cpp.

## ◆ MoveSign()

void Station::MoveSign | ( | TileIndex | new_xy | ) |
| overridevirtual

Move the station main coordinate somewhere else.

Parameters

  new_xy | new tile location of the sign

Reimplemented from BaseStation.

Definition at line 460 of file station_cmd.cpp.

References BaseStation::xy.

Referenced by AddFacility().

## ◆ RecomputeCatchment()

void Station::RecomputeCatchment | ( | bool | no_clear_nearby_lists = `false` | ) |

Recompute tiles covered in our catchment area.

This will additionally recompute nearby towns and industries.

Parameters

  no_clear_nearby_lists | If Station::RemoveFromAllNearbyLists does not need to be called.

Definition at line 455 of file station.cpp.

References _settings_game, AddIndustryToDeliver(), CA_NONE, catchment_tiles, OrthogonalTileArea::Expand(), Industry::GetByTile(), GetCatchmentRect(), GetIndustryIndex(), GetStationIndex(), GetTileCatchmentRadius(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_station_pool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, industries_near, industry, BitmapTileArea::Initialize(), INVALID_TILE, IsTileType(), Industry::location, MP_HOUSE, MP_INDUSTRY, MP_STATION, Industry::neutral_station, BaseStation::rect, RemoveFromAllNearbyLists(), RemoveIndustryToDeliver(), BitmapTileArea::Reset(), StationSettings::serve_neutral_industries, BitmapTileArea::SetTile(), GameSettings::station, Town::stations_near, Industry::stations_near, and TileXY().

Referenced by AfterStationTileSetChange().

## ◆ RecomputeCatchmentForAll()

void Station::RecomputeCatchmentForAll | ( |  | ) |
| static

Recomputes catchment of all stations.

This will additionally recompute nearby stations for all towns and industries.

Definition at line 523 of file station.cpp.

References SpecializedStation< Station, false >::Iterate(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Iterate(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >::Iterate().

## ◆ RemoveIndustryToDeliver()

void Station::RemoveIndustryToDeliver | ( | Industry * | ind | ) |

Remove nearby industry from station's industries_near list.

Parameters

  ind | Industry

Definition at line 416 of file station.cpp.

References industries_near.

Referenced by RecomputeCatchment().

## ◆ TileBelongsToRailStation()

bool Station::TileBelongsToRailStation | ( | TileIndex | tile | ) | const
| inlineoverridevirtual

Check whether a specific tile belongs to this station.

Parameters

  tile | the tile to check

Returns
  true if the tile belongs to this station

Implements BaseStation.

Definition at line 507 of file station_base.h.

References GetStationIndex(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_station_pool >::index, and IsRailStationTile().

Referenced by GetPlatformLength(), and MarkTilesDirty().

## Field Documentation

## ◆ industries_near

IndustryList Station::industries_near

Cached list of industries near the station that can accept cargo,.

See also
  DeliverGoodsToIndustry()

Definition at line 474 of file station_base.h.

Referenced by AddCargoDelivery(), AddIndustryToDeliver(), CheckSubsidised(), DeliverGoodsToIndustry(), PopulateStationsNearby(), RecomputeCatchment(), and RemoveIndustryToDeliver().

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

- src/station_base.h
- src/newgrf_station.cpp
- src/station.cpp
- src/station_cmd.cpp