OpenTTD Source 20260206-master-g4d4e37dbf1
SpecializedStation< T, Tis_waypoint > Struct Template Reference

Class defining several overloaded accessors so we don't have to cast base stations that often. More...

#include <base_station_base.h>

Inheritance diagram for SpecializedStation< T, Tis_waypoint >:
BaseStation

Public Member Functions

 SpecializedStation (StationID index, TileIndex tile)
 Set station type correctly.
Public Member Functions inherited from BaseStation
 BaseStation (StationID index, TileIndex tile)
 Initialize the base station.
virtual bool TileBelongsToRailStation (TileIndex tile) const =0
 Check whether a specific tile belongs to this station.
virtual uint32_t GetNewGRFVariable (const struct ResolverObject &object, uint8_t variable, uint8_t parameter, bool &available) const =0
 Helper function to get a NewGRF variable that isn't implemented by the base class.
virtual void UpdateVirtCoord ()=0
 Update the coordinated of the sign (as shown in the viewport).
const std::string & GetCachedName () const
virtual void MoveSign (TileIndex new_xy)
 Move this station's main coordinate somewhere else.
virtual TileArea GetTileArea (StationType type) const =0
 Get the tile area for a given station type.
virtual uint GetPlatformLength (TileIndex tile) const =0
 Obtain the length of a platform.
virtual uint GetPlatformLength (TileIndex tile, DiagDirection dir) const =0
 Determines the REMAINING length of a platform, starting at (and including) the given tile.
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.
uint8_t GetRoadStopRandomBits (TileIndex tile) const
uint8_t GetRoadStopAnimationFrame (TileIndex tile) const
void SetRoadStopRandomBits (TileIndex tile, uint8_t random_bits)
bool SetRoadStopAnimationFrame (TileIndex tile, uint8_t frame)
void RemoveRoadStopTileData (TileIndex tile)

Static Public Member Functions

static bool IsExpected (const BaseStation *st)
 Helper for checking whether the given station is of this type.
static bool IsValidID (auto index)
 Tests whether given index is a valid index for station of this type.
static T * Get (auto index)
 Gets station with given index.
static T * GetIfValid (auto index)
 Returns station if the index is a valid index for this station type.
static T * GetByTile (TileIndex tile)
 Get the station belonging to a specific tile.
template<typename... Targs>
static T * Create (Targs &&... args)
 Creates a new T-object in the station pool.
template<typename... Targs>
static T * CreateAtIndex (StationID index, Targs &&... args)
 Creates a new T-object in the station pool.
static T * From (BaseStation *st)
 Converts a BaseStation to SpecializedStation with type checking.
static const T * From (const BaseStation *st)
 Converts a const BaseStation to const SpecializedStation with type checking.
static Pool::IterateWrapper< T > Iterate (size_t from=0)
 Returns an iterable ensemble of all valid stations of type T.
Static Public Member Functions inherited from BaseStation
static BaseStationGetByTile (TileIndex tile)
 Get the base station belonging to a specific tile.
static void PostDestructor (size_t index)
 Invalidating of the JoinStation window has to be done after removing item from the pool.

Static Public Attributes

static constexpr StationFacilities EXPECTED_FACIL = Tis_waypoint ? StationFacility::Waypoint : StationFacilities{}
 Specialized type.

Additional Inherited Members

Data Fields inherited from BaseStation
TileIndex xy = INVALID_TILE
 Base tile of the station.
TrackedViewportSign sign {}
 NOSAVE: Dimensions of sign.
uint8_t delete_ctr = 0
 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 = INVALID_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.
Towntown = nullptr
 The town this station is associated with.
Owner owner = INVALID_OWNER
 The owner of this station.
StationFacilities facilities {}
 The facilities that this station has.
std::vector< SpecMapping< StationSpec > > speclist {}
 List of rail station specs of this station.
std::vector< SpecMapping< RoadStopSpec > > roadstop_speclist {}
 List of road stop specs of this station.
TimerGameCalendar::Date build_date {}
 Date of construction.
uint16_t random_bits = 0
 Random bits assigned to this station.
std::unordered_map< TileIndex, StationRandomTriggers > tile_waiting_random_triggers
StationRandomTriggers waiting_random_triggers
 Waiting triggers (NewGRF), shared by all station parts/tiles, road stops, ... essentially useless and broken by design.
StationAnimationTriggers cached_anim_triggers
 NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen.
StationAnimationTriggers 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 {INVALID_TILE, 0, 0}
 Tile area the train 'station' part covers.
StationRect rect {}
 NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions.
std::vector< RoadStopTileDatacustom_roadstop_tile_data {}
 List of custom road stop tile data.

Detailed Description

template<class T, bool Tis_waypoint>
struct SpecializedStation< T, Tis_waypoint >

Class defining several overloaded accessors so we don't have to cast base stations that often.

Definition at line 217 of file base_station_base.h.

Constructor & Destructor Documentation

◆ SpecializedStation()

template<class T, bool Tis_waypoint>
SpecializedStation< T, Tis_waypoint >::SpecializedStation ( StationID index,
TileIndex tile )
inline

Set station type correctly.

Parameters
indexThe index within the station pool.
tileThe base tile of the station.

Definition at line 225 of file base_station_base.h.

References BaseStation::BaseStation(), and EXPECTED_FACIL.

Member Function Documentation

◆ Create()

template<class T, bool Tis_waypoint>
template<typename... Targs>
T * SpecializedStation< T, Tis_waypoint >::Create ( Targs &&... args)
inlinestatic

Creates a new T-object in the station pool.

Parameters
argsThe arguments to the constructor.
Returns
The created object.

Definition at line 285 of file base_station_base.h.

◆ CreateAtIndex()

template<class T, bool Tis_waypoint>
template<typename... Targs>
T * SpecializedStation< T, Tis_waypoint >::CreateAtIndex ( StationID index,
Targs &&... args )
inlinestatic

Creates a new T-object in the station pool.

Parameters
indexThe index allocate the object at.
argsThe arguments to the constructor.
Returns
The created object.

Definition at line 297 of file base_station_base.h.

◆ From() [1/2]

template<class T, bool Tis_waypoint>
T * SpecializedStation< T, Tis_waypoint >::From ( BaseStation * st)
inlinestatic

Converts a BaseStation to SpecializedStation with type checking.

Parameters
stBaseStation pointer
Returns
pointer to SpecializedStation

Definition at line 307 of file base_station_base.h.

References BaseStation::BaseStation(), and IsExpected().

◆ From() [2/2]

template<class T, bool Tis_waypoint>
const T * SpecializedStation< T, Tis_waypoint >::From ( const BaseStation * st)
inlinestatic

Converts a const BaseStation to const SpecializedStation with type checking.

Parameters
stBaseStation pointer
Returns
pointer to SpecializedStation

Definition at line 318 of file base_station_base.h.

References BaseStation::BaseStation(), and IsExpected().

◆ Get()

template<class T, bool Tis_waypoint>
T * SpecializedStation< T, Tis_waypoint >::Get ( auto index)
inlinestatic

Gets station with given index.

Returns
pointer to station with given index cast to T *

Definition at line 255 of file base_station_base.h.

Referenced by GetIfValid().

◆ GetByTile()

template<class T, bool Tis_waypoint>
T * SpecializedStation< T, Tis_waypoint >::GetByTile ( TileIndex tile)
inlinestatic

Get the station belonging to a specific tile.

Parameters
tileThe tile to get the station from.
Returns
the station associated with that tile.

Definition at line 274 of file base_station_base.h.

References GetIfValid(), and GetStationIndex().

◆ GetIfValid()

template<class T, bool Tis_waypoint>
T * SpecializedStation< T, Tis_waypoint >::GetIfValid ( auto index)
inlinestatic

Returns station if the index is a valid index for this station type.

Returns
pointer to station with given index if it's a station of this type

Definition at line 264 of file base_station_base.h.

References Get(), and IsValidID().

Referenced by GetByTile().

◆ IsExpected()

template<class T, bool Tis_waypoint>
bool SpecializedStation< T, Tis_waypoint >::IsExpected ( const BaseStation * st)
inlinestatic

Helper for checking whether the given station is of this type.

Parameters
stthe station to check.
Returns
true if the station is the type we expect it to be.

Definition at line 236 of file base_station_base.h.

References BaseStation::BaseStation(), BaseStation::facilities, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), and Waypoint.

Referenced by From(), From(), and IsValidID().

◆ IsValidID()

template<class T, bool Tis_waypoint>
bool SpecializedStation< T, Tis_waypoint >::IsValidID ( auto index)
inlinestatic

Tests whether given index is a valid index for station of this type.

Parameters
indextested index
Returns
is this index valid index of T?

Definition at line 246 of file base_station_base.h.

References IsExpected().

Referenced by GetIfValid().

◆ Iterate()

template<class T, bool Tis_waypoint>
Pool::IterateWrapper< T > SpecializedStation< T, Tis_waypoint >::Iterate ( size_t from = 0)
inlinestatic

Returns an iterable ensemble of all valid stations of type T.

Parameters
fromindex of the first station to consider
Returns
an iterable ensemble of all valid stations of type T

Definition at line 329 of file base_station_base.h.

Field Documentation

◆ EXPECTED_FACIL

template<class T, bool Tis_waypoint>
StationFacilities SpecializedStation< T, Tis_waypoint >::EXPECTED_FACIL = Tis_waypoint ? StationFacility::Waypoint : StationFacilities{}
staticconstexpr

Specialized type.

Definition at line 218 of file base_station_base.h.

Referenced by SpecializedStation().


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