OpenTTD
|
Station data structure. More...
#include <station_base.h>
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. | |
void | AddFacility (StationFacility new_facility_bit, TileIndex facil_xy) |
Called when new facility is built on the station. | |
void | MarkTilesDirty (bool cargo_change) const |
Marks the tiles of the station as dirty. | |
void | UpdateVirtCoord () |
Update the virtual coords needed to draw the station sign. | |
uint | GetPlatformLength (TileIndex tile, DiagDirection dir) const |
Determines the REMAINING length of a platform, starting at (and including) the given tile. | |
uint | GetPlatformLength (TileIndex tile) const |
Obtain the length of a platform. | |
void | RecomputeIndustriesNear () |
Recomputes Station::industries_near, list of industries possibly accepting cargo in station's catchment radius. | |
uint | GetCatchmentRadius () const |
Determines the catchment radius of the station. | |
Rect | GetCatchmentRect () const |
Determines catchment rectangle of this station. | |
bool | TileBelongsToRailStation (TileIndex tile) const |
Check whether a specific tile belongs to this station. | |
bool | TileBelongsToAirport (TileIndex tile) const |
uint32 | GetNewGRFVariable (const ResolverObject &object, byte variable, byte parameter, bool *available) const |
void | GetTileArea (TileArea *ta, StationType type) const |
Get the tile area for a given station type. | |
![]() | |
SpecializedStation (TileIndex tile) | |
Set station type correctly. | |
![]() | |
BaseStation (TileIndex tile) | |
Initialize the base station. | |
virtual uint32 | 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. | |
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. | |
![]() | |
void * | operator new (size_t size) |
Allocates space for new Titem. | |
void * | operator new (size_t size, size_t index) |
Allocates space for new Titem with given index. | |
void * | operator new (size_t size, void *ptr) |
Allocates space for new Titem at given memory address. | |
void | operator delete (void *p) |
Marks Titem as free. |
Static Public Member Functions | |
static void | RecomputeIndustriesNearForAll () |
Recomputes Station::industries_near for all stations. | |
![]() | |
static bool | IsExpected (const BaseStation *st) |
Helper for checking whether the given station is of this type. | |
static bool | IsValidID (size_t index) |
Tests whether given index is a valid index for station of this type. | |
static Station * | Get (size_t index) |
Gets station with given index. | |
static Station * | GetIfValid (size_t index) |
Returns station if the index is a valid index for this station type. | |
static Station * | GetByTile (TileIndex tile) |
Get the station belonging to a specific tile. | |
static Station * | From (BaseStation *st) |
Converts a BaseStation to SpecializedStation with type checking. | |
static const Station * | From (const BaseStation *st) |
Converts a const BaseStation to const SpecializedStation with type checking. | |
![]() | |
static void | PostDestructor (size_t index) |
Invalidating of the JoinStation window has to be done after removing item from the pool. | |
![]() | |
static bool | CanAllocateItem (size_t n=1) |
Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function() | |
static bool | CleaningPool () |
Returns current state of pool cleaning - yes or no. | |
static size_t | GetPoolSize () |
Returns first unused index. | |
static size_t | GetNumItems () |
Returns number of valid items in the pool. |
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. | |
TileIndex | dock_tile |
The location of the dock. | |
IndustryType | indtype |
Industry type to get the name from. | |
StationHadVehicleOfTypeByte | 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. | |
uint32 | always_accepted |
Bitmask of always accepted cargo types (by houses, HQs, industry tiles when industry doesn't accept cargo) | |
IndustryVector | industries_near |
Cached list of industries near the station that can accept cargo,. |
Additional Inherited Members | |
![]() | |
static const StationFacility | EXPECTED_FACIL |
Specialized type. |
Station data structure.
Definition at line 446 of file station_base.h.
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 76 of file station.cpp.
References FlowStatMap::DeleteFlows(), DeleteStationNews(), DeleteWindowById(), GoodsEntry::flows, FOR_ALL_AIRCRAFT, FOR_ALL_VEHICLES, SpecializedStation< Station, false >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_link_graph_pool >::GetIfValid(), goods, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, LinkGraphSchedule::instance, INVALID_DATE, CargoPacket::InvalidateAllFrom(), InvalidateWindowClassesData(), InvalidateWindowData(), Aircraft::IsNormalAircraft(), Vehicle::last_loading_station, Vehicle::last_station_visited, NUM_CARGO, OWNER_NONE, LinkGraph::RemoveNode(), RemoveOrderFromAllVehicles(), RerouteCargo(), LinkGraph::Size(), Aircraft::targetairport, LinkGraphSchedule::Unqueue(), WC_STATION_LIST, and WC_STATION_VIEW.
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 187 of file station.cpp.
References _current_company, _date, and FACIL_NONE.
Referenced by CmdBuildAirport(), CmdBuildDock(), CmdBuildRailStation(), and CmdBuildRoadStop().
uint Station::GetCatchmentRadius | ( | ) | const |
Determines the catchment radius of the station.
Definition at line 271 of file station.cpp.
References _settings_game, CA_BUS, CA_DOCK, CA_NONE, CA_TRAIN, CA_TRUCK, CA_UNMODIFIED, INVALID_TILE, StationSettings::modified_catchment, and GameSettings::station.
Referenced by FindStationsAroundTiles(), and UpdateStationAcceptance().
Rect Station::GetCatchmentRect | ( | ) | const |
Determines catchment rectangle of this station.
Definition at line 294 of file station.cpp.
References MapMaxX(), and MapMaxY().
Referenced by CheckSubsidised(), and TriggerWatchedCargoCallbacks().
|
virtual |
Determines the REMAINING length of a platform, starting at (and including) the given tile.
tile | the tile from which to start searching. Must be a rail station tile |
dir | The direction in which to search. |
Implements BaseStation.
Definition at line 252 of file station.cpp.
References DIAGDIR_END, IsCompatibleTrainStationTile(), IsRailStationTile(), and TileOffsByDiagDir().
Referenced by GetTrainStopLocation(), NPFSaveTargetData(), and UpdateLoadUnloadTicks().
|
virtual |
Obtain the length of a platform.
tile | A tile that contains the platform in question |
Implements BaseStation.
Definition at line 230 of file station.cpp.
References AXIS_X, GetRailStationAxis(), IsCompatibleTrainStationTile(), and TileDiffXY().
|
virtual |
Get the tile area for a given station type.
ta | tile area to fill. |
type | the type of the area |
Implements BaseStation.
Definition at line 380 of file station_cmd.cpp.
References airport, bus_station, dock_tile, OrthogonalTileArea::h, OrthogonalTileArea::tile, BaseStation::train_station, truck_station, and OrthogonalTileArea::w.
|
inlinevirtual |
Check whether a specific tile belongs to this station.
tile | the tile to check |
Implements BaseStation.
Definition at line 494 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 TriggerStationRandomisation().
IndustryVector Station::industries_near |
Cached list of industries near the station that can accept cargo,.
Definition at line 475 of file station_base.h.
Referenced by AddCargoDelivery(), CheckSubsidised(), and DeliverGoodsToIndustry().