OpenTTD Source: src/station_cmd.cpp File Reference

OpenTTD Source 15.3

Data Structures | Typedefs | Enumerations | Functions | Variables
station_cmd.cpp File Reference

Handling of station tiles. More...

`#include "stdafx.h"`
`#include "core/flatset_type.hpp"`
`#include "aircraft.h"`
`#include "bridge_map.h"`
`#include "vehiclelist_func.h"`
`#include "viewport_func.h"`
`#include "viewport_kdtree.h"`
`#include "command_func.h"`
`#include "town.h"`
`#include "news_func.h"`
`#include "train.h"`
`#include "ship.h"`
`#include "roadveh.h"`
`#include "industry.h"`
`#include "newgrf_cargo.h"`
`#include "newgrf_debug.h"`
`#include "newgrf_station.h"`
`#include "newgrf_canal.h"`
`#include "pathfinder/yapf/yapf_cache.h"`
`#include "road_internal.h"`
`#include "autoslope.h"`
`#include "water.h"`
`#include "tilehighlight_func.h"`
`#include "strings_func.h"`
`#include "clear_func.h"`
`#include "timer/timer_game_calendar.h"`
`#include "vehicle_func.h"`
`#include "string_func.h"`
`#include "animated_tile_func.h"`
`#include "elrail_func.h"`
`#include "station_base.h"`
`#include "station_func.h"`
`#include "station_kdtree.h"`
`#include "roadstop_base.h"`
`#include "newgrf_railtype.h"`
`#include "newgrf_roadtype.h"`
`#include "waypoint_base.h"`
`#include "waypoint_func.h"`
`#include "pbs.h"`
`#include "debug.h"`
`#include "core/random_func.hpp"`
`#include "core/container_func.hpp"`
`#include "company_base.h"`
`#include "table/airporttile_ids.h"`
`#include "newgrf_airporttiles.h"`
`#include "order_backup.h"`
`#include "newgrf_house.h"`
`#include "company_gui.h"`
`#include "linkgraph/linkgraph_base.h"`
`#include "linkgraph/refresh.h"`
`#include "tunnelbridge_map.h"`
`#include "station_cmd.h"`
`#include "waypoint_cmd.h"`
`#include "landscape_cmd.h"`
`#include "rail_cmd.h"`
`#include "newgrf_roadstop.h"`
`#include "timer/timer.h"`
`#include "timer/timer_game_economy.h"`
`#include "timer/timer_game_tick.h"`
`#include "cheat_type.h"`
`#include "road_func.h"`
`#include "station_layout_type.h"`
`#include "widgets/station_widget.h"`
`#include "widgets/misc_widget.h"`
`#include "table/strings.h"`
`#include "table/station_land.h"`
`#include <bitset>`
`#include "safeguards.h"`

Go to the source code of this file.

## Data Structures
struct | StationNameInformation
| Information to handle station action 0 property 24 correctly. More...

## Typedefs
typedef bool(* | CMSAMatcher) (TileIndex tile)
| Function to check whether the given tile matches some criterion.

## Enumerations
enum | StationNaming : uint8_t { STATIONNAMING_RAIL , STATIONNAMING_ROAD , STATIONNAMING_AIRPORT , STATIONNAMING_OILRIG , STATIONNAMING_DOCK , STATIONNAMING_HELIPORT }

## Functions
bool | IsHangar (Tile t)
| Check whether the given tile is a hangar.
template<class T , class F >
CommandCost | GetStationAround (TileArea ta, StationID closest_station, CompanyID company, T **st, F filter)
| Look for a station owned by the given company around the given tile area.
static int | CountMapSquareAround (TileIndex tile, CMSAMatcher cmp)
| Counts the numbers of tiles matching a specific type in the area around.
static bool | CMSAMine (TileIndex tile)
| Check whether the tile is a mine.
static bool | CMSAWater (TileIndex tile)
| Check whether the tile is water.
static bool | CMSATree (TileIndex tile)
| Check whether the tile is a tree.
static StringID | GenerateStationName (Station *st, TileIndex tile, StationNaming name_class)
static Station * | GetClosestDeletedStation (TileIndex tile)
| Find the closest deleted station of the current company.
void | UpdateAllStationVirtCoords ()
| Update the virtual coords needed to draw the station sign for all stations.
void | ClearAllStationCachedNames ()
CargoTypes | GetAcceptanceMask (const Station *st)
| Get a mask of the cargo types that the station accepts.
CargoTypes | GetEmptyMask (const Station *st)
| Get a mask of the cargo types that are empty at the station.
static void | ShowRejectOrAcceptNews (const Station *st, CargoTypes cargoes, bool reject)
| Add news item for when a station changes which cargoes it accepts.
CargoArray | GetProductionAroundTiles (TileIndex north_tile, int w, int h, int rad)
| Get the cargo types being produced around the tile (in a rectangle).
CargoArray | GetAcceptanceAroundTiles (TileIndex center_tile, int w, int h, int rad, CargoTypes *always_accepted)
| Get the acceptance of cargoes around the tile in 1/8.
static CargoArray | GetAcceptanceAroundStation (const Station *st, CargoTypes *always_accepted)
| Get the acceptance of cargoes around the station in.
void | UpdateStationAcceptance (Station *st, bool show_msg)
| Update the acceptance for a station.
static void | UpdateStationSignCoord (BaseStation *st)
static CommandCost | BuildStationPart (Station **st, DoCommandFlags flags, bool reuse, TileArea area, StationNaming name_class)
| Common part of building various station parts and possibly attaching them to an existing one.
static void | DeleteStationIfEmpty (BaseStation *st)
| This is called right after a station was deleted.
CommandCost | ClearTile_Station (TileIndex tile, DoCommandFlags flags)
| Clear a single tile of a station.
CommandCost | CheckBuildableTile (TileIndex tile, DiagDirections invalid_dirs, int &allowed_z, bool allow_steep, bool check_bridge=true)
| Checks if the given tile is buildable, flat and has a certain height.
static CommandCost | CheckFlatLandAirport (AirportTileTableIterator tile_iter, DoCommandFlags flags)
| Checks if an airport can be built at the given location and clear the area.
static StringID | GetBridgeTooLowMessageForStationType (StationType type)
| Get station-type-specific string for a bridge that is too low.
static CommandCost | IsStationBridgeAboveOk (TileIndex tile, std::span< const BridgeableTileInfo > bridgeable_info, StationType type, StationGfx layout, int bridge_height, StringID disallowed_msg=INVALID_STRING_ID)
| Test if a bridge can be built above a station.
static std::span< const BridgeableTileInfo > | GetStationBridgeableTileInfo (StationType type)
| Get bridgeable tile information for a station type.
CommandCost | IsRailStationBridgeAboveOk (TileIndex tile, const StationSpec *spec, StationType type, StationGfx layout)
| Test if a rail station can be built below a bridge.
CommandCost | IsRoadStationBridgeAboveOk (TileIndex tile, const RoadStopSpec *spec, StationType type, StationGfx layout)
| Test if a road station can be built below a bridge.
static CommandCost | IsDockBridgeAboveOk (TileIndex tile, StationGfx layout)
| Test if a dock can be built below a bridge.
CommandCost | IsBuoyBridgeAboveOk (TileIndex tile)
| Test if a buoy can be built below a bridge.
static CommandCost | CheckFlatLandRailStation (TileIndex tile_cur, TileIndex north_tile, int &allowed_z, DoCommandFlags flags, Axis axis, StationID *station, RailType rt, std::vector< Train * > &affected_vehicles, StationClassID spec_class, uint16_t spec_index, uint8_t plat_len, uint8_t numtracks)
| Checks if a rail station can be built at the given tile.
static CommandCost | CheckFlatLandRoadStop (TileIndex cur_tile, int &allowed_z, const RoadStopSpec *spec, DoCommandFlags flags, DiagDirections invalid_dirs, bool is_drive_through, StationType station_type, Axis axis, StationID *station, RoadType rt)
| Checks if a road stop can be built at the given tile.
CommandCost | CanExpandRailStation (const BaseStation *st, TileArea &new_ta)
| Check whether we can expand the rail part of the given station.
template<class T , StringID error_message, class F >
CommandCost | FindJoiningBaseStation (StationID existing_station, StationID station_to_join, bool adjacent, TileArea ta, T **st, F filter)
| Find a nearby station that joins this station.
static CommandCost | FindJoiningStation (StationID existing_station, StationID station_to_join, bool adjacent, TileArea ta, Station **st)
| Find a nearby station that joins this station.
CommandCost | FindJoiningWaypoint (StationID existing_waypoint, StationID waypoint_to_join, bool adjacent, TileArea ta, Waypoint **wp, bool is_road)
| Find a nearby waypoint that joins this waypoint.
static void | FreeTrainReservation (Train *v)
| Clear platform reservation during station building/removing.
static void | RestoreTrainReservation (Train *v)
| Restore platform reservation during station building/removing.
static CommandCost | CalculateRailStationCost (TileArea tile_area, DoCommandFlags flags, Axis axis, StationID *station, RailType rt, std::vector< Train * > &affected_vehicles, StationClassID spec_class, uint16_t spec_index, uint8_t plat_len, uint8_t numtracks)
| Calculates cost of new rail stations within the area.
static StationSpec::TileFlags | GetStationTileFlags (StationGfx gfx, const StationSpec *statspec)
| Get station tile flags for the given StationGfx.
void | SetRailStationTileFlags (TileIndex tile, const StationSpec *statspec)
| Set rail station tile flags for the given tile.
CommandCost | CmdBuildRailStation (DoCommandFlags flags, TileIndex tile_org, RailType rt, Axis axis, uint8_t numtracks, uint8_t plat_len, StationClassID spec_class, uint16_t spec_index, StationID station_to_join, bool adjacent)
| Build rail station.
static TileArea | MakeStationAreaSmaller (BaseStation *st, TileArea ta, bool(*func)(BaseStation *, TileIndex))
static bool | TileBelongsToRailStation (BaseStation *st, TileIndex tile)
static void | MakeRailStationAreaSmaller (BaseStation *st)
static bool | TileBelongsToShipStation (BaseStation *st, TileIndex tile)
static void | MakeShipStationAreaSmaller (Station *st)
static bool | TileBelongsToRoadWaypointStation (BaseStation *st, TileIndex tile)
void | MakeRoadWaypointStationAreaSmaller (BaseStation *st, TileArea &road_waypoint_area)
template<class T >
CommandCost | RemoveFromRailBaseStation (TileArea ta, std::vector< T * > &affected_stations, DoCommandFlags flags, Money removal_cost, bool keep_rail)
| Remove a number of tiles from any rail station within the area.
CommandCost | CmdRemoveFromRailStation (DoCommandFlags flags, TileIndex start, TileIndex end, bool keep_rail)
| Remove a single tile from a rail station.
CommandCost | CmdRemoveFromRailWaypoint (DoCommandFlags flags, TileIndex start, TileIndex end, bool keep_rail)
| Remove a single tile from a waypoint.
template<class T >
CommandCost | RemoveRailStation (T *st, DoCommandFlags flags, Money removal_cost)
| Remove a rail station/waypoint.
static CommandCost | RemoveRailStation (TileIndex tile, DoCommandFlags flags)
| Remove a rail station.
static CommandCost | RemoveRailWaypoint (TileIndex tile, DoCommandFlags flags)
| Remove a rail waypoint.
static RoadStop ** | FindRoadStopSpot (bool truck_station, Station *st)
static CommandCost | RemoveRoadStop (TileIndex tile, DoCommandFlags flags, int replacement_spec_index)
| Remove a bus station/truck stop.
CommandCost | RemoveRoadWaypointStop (TileIndex tile, DoCommandFlags flags, int replacement_spec_index)
| Remove a road waypoint.
static CommandCost | FindJoiningRoadStop (StationID existing_stop, StationID station_to_join, bool adjacent, TileArea ta, Station **st)
| Find a nearby station that joins this road stop.
CommandCost | CalculateRoadStopCost (TileArea tile_area, DoCommandFlags flags, bool is_drive_through, StationType station_type, const RoadStopSpec *roadstopspec, Axis axis, DiagDirection ddir, StationID *est, RoadType rt, Money unit_cost)
| Calculates cost of new road stops within the area.
CommandCost | CmdBuildRoadStop (DoCommandFlags flags, TileIndex tile, uint8_t width, uint8_t length, RoadStopType stop_type, bool is_drive_through, DiagDirection ddir, RoadType rt, RoadStopClassID spec_class, uint16_t spec_index, StationID station_to_join, bool adjacent)
| Build a bus or truck stop.
static CommandCost | RemoveGenericRoadStop (DoCommandFlags flags, const TileArea &roadstop_area, bool road_waypoint, bool remove_road)
| Remove a tile area of road stop or road waypoints.
CommandCost | CmdRemoveRoadStop (DoCommandFlags flags, TileIndex tile, uint8_t width, uint8_t height, RoadStopType stop_type, bool remove_road)
| Remove bus or truck stops.
CommandCost | CmdRemoveFromRoadWaypoint (DoCommandFlags flags, TileIndex start, TileIndex end)
| Remove road waypoints.
uint8_t | GetAirportNoiseLevelForDistance (const AirportSpec *as, uint distance)
| Get a possible noise reduction factor based on distance from town center.
Town * | AirportGetNearestTown (const AirportSpec *as, Direction rotation, TileIndex tile, TileIterator &&it, uint &mindist)
| Finds the town nearest to given airport.
static Town * | AirportGetNearestTown (const Station *st, uint &mindist)
| Finds the town nearest to given existing airport.
void | UpdateAirportsNoise ()
| Recalculate the noise generated by the airports of each town.
CommandCost | CmdBuildAirport (DoCommandFlags flags, TileIndex tile, uint8_t airport_type, uint8_t layout, StationID station_to_join, bool allow_adjacent)
| Place an Airport.
static CommandCost | RemoveAirport (TileIndex tile, DoCommandFlags flags)
| Remove an airport.
CommandCost | CmdOpenCloseAirport (DoCommandFlags flags, StationID station_id)
| Open/close an airport to incoming aircraft.
bool | HasStationInUse (StationID station, bool include_company, CompanyID company)
| Tests whether the company's vehicles have this station in orders.
CommandCost | CmdBuildDock (DoCommandFlags flags, TileIndex tile, StationID station_to_join, bool adjacent)
| Build a dock/haven.
void | RemoveDockingTile (TileIndex t)
void | ClearDockingTilesCheckingNeighbours (TileIndex tile)
| Clear docking tile status from tiles around a removed dock, if the tile has no neighbours which would keep it as a docking tile.
static TileIndex | FindDockLandPart (TileIndex t)
| Find the part of a dock that is land-based.
static CommandCost | RemoveDock (TileIndex tile, DoCommandFlags flags)
| Remove a dock.
const DrawTileSprites * | GetStationTileLayout (StationType st, uint8_t gfx)
| Get station tile layout for a station type and its station gfx.
bool | SplitGroundSpriteForOverlay (const TileInfo *ti, SpriteID *ground, RailTrackOffset *overlay_offset)
| Check whether a sprite is a track sprite, which can be replaced by a non-track ground sprite and a rail overlay.
static BridgePillarFlags | GetStationBlockedPillars (std::span< const BridgeableTileInfo > bridgeable_info, uint8_t layout)
| Get blocked pillar information for a station tile.
static bool | DrawCustomStationFoundations (const StationSpec *statspec, BaseStation *st, TileInfo *ti, StationGfx gfx)
| Draw custom station foundations for a NewGRF station if provided.
static void | DrawTile_Station (TileInfo *ti)
void | StationPickerDrawSprite (int x, int y, StationType st, RailType railtype, RoadType roadtype, int image)
static int | GetSlopePixelZ_Station (TileIndex tile, uint, uint, bool)
static Foundation | GetFoundation_Station (TileIndex, Slope tileh)
static void | FillTileDescRoadStop (TileIndex tile, TileDesc &td)
void | FillTileDescRailStation (TileIndex tile, TileDesc &td)
void | FillTileDescAirport (TileIndex tile, TileDesc &td)
static void | GetTileDesc_Station (TileIndex tile, TileDesc &td)
static TrackStatus | GetTileTrackStatus_Station (TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
static void | TileLoop_Station (TileIndex tile)
static void | AnimateTile_Station (TileIndex tile)
static bool | ClickTile_Station (TileIndex tile)
static VehicleEnterTileStates | VehicleEnter_Station (Vehicle *v, TileIndex tile, int x, int y)
void | TriggerWatchedCargoCallbacks (Station *st)
| Run the watched cargo callback for all houses in the catchment area.
static bool | StationHandleBigTick (BaseStation *st)
| This function is called for each station once every 250 ticks.
static void | byte_inc_sat (uint8_t *p)
static void | TruncateCargo (const CargoSpec *cs, GoodsEntry *ge, uint amount=UINT_MAX)
| Truncate the cargo by a specific amount.
static void | UpdateStationRating (Station *st)
| Periodic update of a station's rating.
void | RerouteCargo (Station *st, CargoType cargo, StationID avoid, StationID avoid2)
| Reroute cargo of type c at station st or in any vehicles unloading there.
void | DeleteStaleLinks (Station *from)
| Check all next hops of cargo packets in this station for existence of a a valid link they may use to travel on.
void | IncreaseStats (Station *st, CargoType cargo, StationID next_station_id, uint capacity, uint usage, uint32_t time, EdgeUpdateModes modes)
| Increase capacity for a link stat given by station cargo and next hop.
void | IncreaseStats (Station *st, const Vehicle *front, StationID next_station_id, uint32_t time)
| Increase capacity for all link stats associated with vehicles in the given consist.
static void | StationHandleSmallTick (BaseStation *st)
void | OnTick_Station ()
void | ModifyStationRatingAround (TileIndex tile, Owner owner, int amount, uint radius)
| Forcibly modify station ratings near a given tile.
static uint | UpdateStationWaiting (Station *st, CargoType cargo, uint amount, Source source)
static bool | IsUniqueStationName (const std::string &name)
CommandCost | CmdRenameStation (DoCommandFlags flags, StationID station_id, const std::string &text)
| Rename a station.
std::tuple< CommandCost, StationID > | CmdMoveStationName (DoCommandFlags flags, StationID station_id, TileIndex tile)
| Move a station name.
void | CcMoveStationName (Commands, const CommandCost &result, StationID station_id)
| Callback function that is called after a name is moved.
static void | AddNearbyStationsByCatchment (TileIndex tile, StationList &stations, StationList &nearby)
static bool | CanMoveGoodsToStation (const Station *st, CargoType cargo)
uint | MoveGoodsToStation (CargoType cargo, uint amount, Source source, const StationList &all_stations, Owner exclusivity)
void | UpdateStationDockingTiles (Station *st)
void | BuildOilRig (TileIndex tile)
void | DeleteOilRig (TileIndex tile)
static void | ChangeTileOwner_Station (TileIndex tile, Owner old_owner, Owner new_owner)
static CommandCost | CanRemoveRoadWithStop (TileIndex tile, DoCommandFlags flags)
| Check if a drive-through road stop tile can be cleared.
static CommandCost | TerraformTile_Station (TileIndex tile, DoCommandFlags flags, int z_new, Slope tileh_new)
static CommandCost | CheckBuildAbove_Station (TileIndex tile, DoCommandFlags, Axis, int height)

## Variables
static const TileIndexDiffC | _dock_tileoffs_chkaround []
static const uint8_t | _dock_w_chk [4] = { 2, 1, 2, 1 }
static const uint8_t | _dock_h_chk [4] = { 1, 2, 1, 2 }
static const IntervalTimer< TimerGameEconomy > | _economy_stations_monthly ({TimerGameEconomy::MONTH, TimerGameEconomy::Priority::STATION}, [](auto) { for(Station *st :Station::Iterate()) { for(GoodsEntry &ge :st->goods) { ge.status.Set(GoodsEntry::State::LastMonth, ge.status.Test(GoodsEntry::State::CurrentMonth));ge.status.Reset(GoodsEntry::State::CurrentMonth);} } })
| Economy monthly loop for stations.
const TileTypeProcs | _tile_type_station_procs

## Detailed Description

Handling of station tiles.

Definition in file station_cmd.cpp.

## Typedef Documentation

## ◆ CMSAMatcher

typedef bool(* CMSAMatcher) (TileIndex tile)

Function to check whether the given tile matches some criterion.

Parameters

  tile | the tile to check

Returns
  true if it matches, false otherwise

Definition at line 149 of file station_cmd.cpp.

## Enumeration Type Documentation

## ◆ StationNaming

enum StationNaming : uint8_t

Definition at line 218 of file station_cmd.cpp.

## Function Documentation

## ◆ AddNearbyStationsByCatchment()

static void AddNearbyStationsByCatchment | ( | TileIndex | tile,
|  | StationList & | stations,
|  | StationList & | nearby
| ) |  |
| static

Definition at line 4548 of file station_cmd.cpp.

## ◆ AirportGetNearestTown() [1/2]

Town * AirportGetNearestTown | ( | const AirportSpec * | as,
|  | Direction | rotation,
|  | TileIndex | tile,
|  | TileIterator && | it,
|  | uint & | mindist
| ) |  |

Finds the town nearest to given airport.

Based on minimal manhattan distance to any airport's tile. If two towns have the same distance, town with lower index is returned.

Parameters

  | as | airport's description
  | rotation | airport's rotation
  | tile | origin tile (top corner of the airport)
  | it | An iterator over all airport tiles (consumed)
  [out] | mindist | Minimum distance to town

Returns
  nearest town to airport

Definition at line 2554 of file station_cmd.cpp.

References CalcClosestTownFromTile(), DIR_E, DIR_W, DistanceManhattan(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::GetNumItems(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, INVALID_TILE, IsInsideBS(), AirportSpec::size_x, AirportSpec::size_y, TileX(), TileY(), and Town::xy.

Referenced by AirportGetNearestTown(), CmdBuildAirport(), RemoveAirport(), and UpdateAirportsNoise().

## ◆ AirportGetNearestTown() [2/2]

static Town * AirportGetNearestTown | ( | const Station * | st,
|  | uint & | mindist
| ) |  |
| static

Finds the town nearest to given existing airport.

Based on minimal manhattan distance to any airport's tile. If two towns have the same distance, town with lower index is returned.

Parameters

  | station | existing station with airport
  [out] | mindist | Minimum distance to town

Returns
  nearest town to airport

Definition at line 2597 of file station_cmd.cpp.

References Station::airport, AirportGetNearestTown(), Airport::GetSpec(), Airport::rotation, and OrthogonalTileArea::tile.

## ◆ AnimateTile_Station()

static void AnimateTile_Station | ( | TileIndex | tile | ) |
| static

Definition at line 3805 of file station_cmd.cpp.

## ◆ BuildOilRig()

void BuildOilRig | ( | TileIndex | tile | ) |

Definition at line 4710 of file station_cmd.cpp.

## ◆ BuildStationPart()

static CommandCost BuildStationPart | ( | Station ** | st,
|  | DoCommandFlags | flags,
|  | bool | reuse,
|  | TileArea | area,
|  | StationNaming | name_class
| ) |  |
| static

Common part of building various station parts and possibly attaching them to an existing one.

Parameters

  [in,out] | st | Station to attach to
  | flags | Command flags
  | reuse | Whether to try to reuse a deleted station (gray sign) if possible
  | area | Area occupied by the new part
  | name_class | Station naming class to use to generate the new station's name

Returns
  Command error that occurred, if any

Definition at line 687 of file station_cmd.cpp.

References _current_company, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_station_pool >::CanAllocateItem(), ClosestTownFromTile(), CMD_ERROR, Execute, CommandCost::Failed(), GenerateStationName(), GetClosestDeletedStation(), OrthogonalTileArea::h, Kdtree< T, TxyFunc, CoordT, DistT >::Insert(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::IsValidID(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), OrthogonalTileArea::tile, and OrthogonalTileArea::w.

Referenced by CmdBuildAirport(), CmdBuildDock(), CmdBuildRailStation(), and CmdBuildRoadStop().

## ◆ byte_inc_sat()

static void byte_inc_sat | ( | uint8_t * | p | ) |
| inlinestatic

Definition at line 3939 of file station_cmd.cpp.

## ◆ CalculateRailStationCost()

static CommandCost CalculateRailStationCost | ( | TileArea | tile_area,
|  | DoCommandFlags | flags,
|  | Axis | axis,
|  | StationID * | station,
|  | RailType | rt,
|  | std::vector< Train * > & | affected_vehicles,
|  | StationClassID | spec_class,
|  | uint16_t | spec_index,
|  | uint8_t | plat_len,
|  | uint8_t | numtracks
| ) |  |
| static

Calculates cost of new rail stations within the area.

Parameters

  tile_area | Area to check.
  flags | Operation to perform.
  axis | Rail station axis.
  station | StationID to be queried and returned if available.
  rt | The rail type to check for (overbuilding rail stations over rail).
  affected_vehicles | List of trains with PBS reservations on the tiles
  spec_class | Station class.
  spec_index | Index into the station class.
  plat_len | Platform length.
  numtracks | Number of platforms.

Returns
  The cost in case of success, or an error code if it failed.

Definition at line 1363 of file station_cmd.cpp.

References CommandCost::AddCost(), CheckFlatLandRailStation(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), CommandCost::GetCost(), GetRailStationAxis(), IsRailStationTile(), RailBuildCost(), and OrthogonalTileArea::tile.

Referenced by CmdBuildRailStation().

## ◆ CalculateRoadStopCost()

CommandCost CalculateRoadStopCost | ( | TileArea | tile_area,
|  | DoCommandFlags | flags,
|  | bool | is_drive_through,
|  | StationType | station_type,
|  | const RoadStopSpec * | roadstopspec,
|  | Axis | axis,
|  | DiagDirection | ddir,
|  | StationID * | est,
|  | RoadType | rt,
|  | Money | unit_cost
| ) |  |

Calculates cost of new road stops within the area.

Parameters

  tile_area | Area to check.
  flags | Operation to perform.
  is_drive_through | True if trying to build a drive-through station.
  station_type | Station type (bus, truck or road waypoint).
  roadstopspec | Spec of road stop being built.
  axis | Axis of a drive-through road stop.
  ddir | Entrance direction (DiagDirection) for normal stops. Converted to the axis for drive-through stops.
  station | StationID to be queried and returned if available.
  rt | Road type to build, may be INVALID_ROADTYPE if an existing road is required.
  unit_cost | The cost to build one road stop of the current type.

Returns
  The cost in case of success, or an error code if it failed.

Definition at line 2026 of file station_cmd.cpp.

References CommandCost::AddCost(), AxisToDiagDir(), CheckFlatLandRoadStop(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), CommandCost::GetCost(), IsAnyRoadStop(), IsTileType(), MP_STATION, ReverseDiagDir(), and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set().

Referenced by CmdBuildRoadStop(), and CmdBuildRoadWaypoint().

## ◆ CanExpandRailStation()

CommandCost CanExpandRailStation | ( | const BaseStation * | st,
|  | TileArea & | new_ta
| ) |  |

Check whether we can expand the rail part of the given station.

Parameters

  st | the station to expand
  new_ta | the current (and if all is fine new) tile area of the rail part of the station

Returns
  Succeeded or failed command.

Definition at line 1192 of file station_cmd.cpp.

References _settings_game, OrthogonalTileArea::h, GameSettings::station, StationSettings::station_spread, OrthogonalTileArea::tile, TileX(), TileXY(), TileY(), BaseStation::train_station, and OrthogonalTileArea::w.

Referenced by CmdBuildRailStation(), and CmdBuildRailWaypoint().

## ◆ CanMoveGoodsToStation()

static bool CanMoveGoodsToStation | ( | const Station * | st,
|  | CargoType | cargo
| ) |  |
| static

Definition at line 4578 of file station_cmd.cpp.

## ◆ CanRemoveRoadWithStop()

static CommandCost CanRemoveRoadWithStop | ( | TileIndex | tile,
|  | DoCommandFlags | flags
| ) |  |
| static

Check if a drive-through road stop tile can be cleared.

Road stops built on town-owned roads check the conditions that would allow clearing of the original road.

Parameters

  tile | The road stop tile to check.
  flags | Command flags.

Returns
  A succeeded command if the road can be removed, a failed command with the relevant error message otherwise.

Definition at line 4869 of file station_cmd.cpp.

References _current_company, CheckAllowRemoveRoad(), CheckOwnership(), CommandCost::Failed(), GetAnyRoadBits(), GetRoadOwner(), INVALID_ROADTYPE, OWNER_NONE, OWNER_TOWN, OWNER_WATER, RTT_ROAD, and RTT_TRAM.

Referenced by ClearTile_Station().

## ◆ CcMoveStationName()

void CcMoveStationName | ( | Commands | cmd,
|  | const CommandCost & | result,
|  | StationID | station_id
| ) |  |

Callback function that is called after a name is moved.

Parameters

  result | of the operation
  station_id | ID of the changed station

Definition at line 4539 of file station_cmd.cpp.

References CommandCost::Failed(), SpecializedStation< Station, false >::Get(), ResetObjectToPlace(), and SetViewportStationRect().

Referenced by QueryStringWindow::OnPlaceObject().

## ◆ ChangeTileOwner_Station()

static void ChangeTileOwner_Station | ( | TileIndex | tile,
|  | Owner | old_owner,
|  | Owner | new_owner
| ) |  |
| static

Definition at line 4775 of file station_cmd.cpp.

## ◆ CheckBuildableTile()

CommandCost CheckBuildableTile | ( | TileIndex | tile,
|  | DiagDirections | invalid_dirs,
|  | int & | allowed_z,
|  | bool | allow_steep,
|  | bool | check_bridge = `true`
| ) |  |

Checks if the given tile is buildable, flat and has a certain height.

Parameters

  tile | TileIndex to check.
  invalid_dirs | Prohibited directions for slopes (set of DiagDirection).
  allowed_z | Height allowed for the tile. If allowed_z is negative, it will be set to the height of this tile.
  allow_steep | Whether steep slopes are allowed.
  check_bridge | Check for the existence of a bridge.

Returns
  The cost in case of success, or an error code if it failed.

Definition at line 789 of file station_cmd.cpp.

References _settings_game, CommandCost::AddCost(), ConstructionSettings::build_on_slopes, CanBuildDepotByTileh(), GameSettings::construction, DIAGDIR_BEGIN, DIAGDIR_END, EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), GetSlopeMaxZ(), GetTileSlopeZ(), IsBridgeAbove(), IsSteepSlope(), SLOPE_FLAT, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

Referenced by CheckFlatLandAirport(), CheckFlatLandRailStation(), CheckFlatLandRoadStop(), and CmdBuildObject().

## ◆ CheckBuildAbove_Station()

static CommandCost CheckBuildAbove_Station | ( | TileIndex | tile,
|  | DoCommandFlags | ,
|  | Axis | ,
|  | int | height
| ) |  |
| static

Definition at line 5366 of file station_cmd.cpp.

## ◆ CheckFlatLandAirport()

static CommandCost CheckFlatLandAirport | ( | AirportTileTableIterator | tile_iter,
|  | DoCommandFlags | flags
| ) |  |
| static

Checks if an airport can be built at the given location and clear the area.

Parameters

  tile_iter | Airport tile iterator.
  flags | Operation to perform.

Returns
  The cost in case of success, or an error code if it failed.

Definition at line 838 of file station_cmd.cpp.

References CommandCost::AddCost(), CheckBuildableTile(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), CommandCost::GetCost(), and INVALID_TILE.

Referenced by CmdBuildAirport().

## ◆ CheckFlatLandRailStation()

static CommandCost CheckFlatLandRailStation | ( | TileIndex | tile_cur,
|  | TileIndex | north_tile,
|  | int & | allowed_z,
|  | DoCommandFlags | flags,
|  | Axis | axis,
|  | StationID * | station,
|  | RailType | rt,
|  | std::vector< Train * > & | affected_vehicles,
|  | StationClassID | spec_class,
|  | uint16_t | spec_index,
|  | uint8_t | plat_len,
|  | uint8_t | numtracks
| ) |  |
| static

Checks if a rail station can be built at the given tile.

Parameters

  tile_cur | Tile to check.
  north_tile | North tile of the area being checked.
  allowed_z | Height allowed for the tile. If allowed_z is negative, it will be set to the height of this tile.
  flags | Operation to perform.
  axis | Rail station axis.
  station | StationID to be queried and returned if available.
  rt | The rail type to check for (overbuilding rail stations over rail).
  affected_vehicles | List of trains with PBS reservations on the tiles
  spec_class | Station class.
  spec_index | Index into the station class.
  plat_len | Platform length.
  numtracks | Number of platforms.

Returns
  The cost in case of success, or an error code if it failed.

Definition at line 993 of file station_cmd.cpp.

References CommandCost::AddCost(), Auto, AxisToDiagDirs(), StationSpec::callback_mask, CheckBuildableTile(), ClearTile_Station(), DIAGDIR_NE, EXPENSES_CONSTRUCTION, CommandCost::Failed(), NewGRFClass< Tspec, Tindex, Tmax >::Get(), CommandCost::GetCost(), GetRailReservationTrackBits(), GetRailType(), NewGRFClass< Tspec, Tindex, Tmax >::GetSpec(), GetStationIndex(), GetTrackBits(), GetTrainForReservation(), HasBit(), HasPowerOnRail(), HasSignals(), INVALID_RAILTYPE, IsPlainRailTile(), IsRailStation(), IsTileType(), MP_STATION, PerformStationTileSlopeCheck(), RemoveFirstTrack(), SlopeCheck, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), TRACK_BIT_NONE, TRACK_X, and TRACK_Y.

Referenced by CalculateRailStationCost().

## ◆ CheckFlatLandRoadStop()

static CommandCost CheckFlatLandRoadStop | ( | TileIndex | cur_tile,
|  | int & | allowed_z,
|  | const RoadStopSpec * | spec,
|  | DoCommandFlags | flags,
|  | DiagDirections | invalid_dirs,
|  | bool | is_drive_through,
|  | StationType | station_type,
|  | Axis | axis,
|  | StationID * | station,
|  | RoadType | rt
| ) |  |
| static

Checks if a road stop can be built at the given tile.

Parameters

  cur_tile | Tile to check.
  allowed_z | Height allowed for the tile. If allowed_z is negative, it will be set to the height of this tile.
  spec | Spec of road stop to be built.
  flags | Operation to perform.
  invalid_dirs | Prohibited directions (set of DiagDirections).
  is_drive_through | True if trying to build a drive-through station.
  station_type | Station type (bus, truck or road waypoint).
  axis | Axis of a drive-through road stop.
  station | StationID to be queried and returned if available.
  rt | Road type to build, may be INVALID_ROADTYPE if an existing road is required.

Returns
  The cost in case of success, or an error code if it failed.

Definition at line 1076 of file station_cmd.cpp.

References _settings_game, CommandCost::AddCost(), Auto, AXIS_X, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::base(), CheckBuildableTile(), CheckOwnership(), ClearTile_Station(), GameSettings::construction, CountBits(), DRD_NONE, EXPENSES_CONSTRUCTION, CommandCost::Failed(), FindFirstBit(), GetAllRoadBits(), CommandCost::GetCost(), GetDisallowedRoadDirections(), GetDriveThroughStopAxis(), GetRoadBits(), GetRoadOwner(), GetStationIndex(), GetStationType(), GFX_TRUCK_BUS_DRIVETHROUGH_OFFSET, HasExactlyOneBit(), HasPowerOnRoad(), INVALID_ROADTYPE, IsAnyRoadStop(), IsDriveThroughStopTile(), IsNormalRoadTile(), IsRoadStationBridgeAboveOk(), IsTileType(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::IsValidID(), MP_STATION, OWNER_NONE, OWNER_TOWN, ROAD_NONE, ConstructionSettings::road_stop_on_competitor_road, ConstructionSettings::road_stop_on_town_road, ROAD_X, ROAD_Y, RoadBuildCost(), RTT_ROAD, and RTT_TRAM.

Referenced by CalculateRoadStopCost().

## ◆ ClearAllStationCachedNames()

void ClearAllStationCachedNames | ( |  | ) |

Definition at line 477 of file station_cmd.cpp.

## ◆ ClearDockingTilesCheckingNeighbours()

void ClearDockingTilesCheckingNeighbours | ( | TileIndex | tile | ) |

Clear docking tile status from tiles around a removed dock, if the tile has no neighbours which would keep it as a docking tile.

Parameters

  tile | Ex-dock tile to check.

Definition at line 3001 of file station_cmd.cpp.

References CheckForDockingTile(), DIAGDIR_BEGIN, DIAGDIR_END, IsValidTile(), SetDockingTile(), and TileOffsByDiagDir().

Referenced by RemoveDock().

## ◆ ClearTile_Station()

CommandCost ClearTile_Station | ( | TileIndex | tile,
|  | DoCommandFlags | flags
| ) |  |

Clear a single tile of a station.

Parameters

  tile | The tile to clear.
  flags | The DoCommand flags related to the "command".

Returns
  The cost, or error of clearing.

Definition at line 4904 of file station_cmd.cpp.

References Auto, CanRemoveRoadWithStop(), CMD_ERROR, CommandCostWithParam(), CommandCost::Failed(), GetStationType(), HasTileRoadType(), IsDriveThroughStopTile(), RemoveAirport(), RemoveBuoy(), RemoveDock(), RemoveRailStation(), RemoveRailWaypoint(), RemoveRoadStop(), RemoveRoadWaypointStop(), RTT_TRAM, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

Referenced by CheckFlatLandRailStation(), CheckFlatLandRoadStop(), and IsValidTileForWaypoint().

## ◆ ClickTile_Station()

static bool ClickTile_Station | ( | TileIndex | tile | ) |
| static

Definition at line 3824 of file station_cmd.cpp.

## ◆ CmdBuildAirport()

CommandCost CmdBuildAirport | ( | DoCommandFlags | flags,
|  | TileIndex | tile,
|  | uint8_t | airport_type,
|  | uint8_t | layout,
|  | StationID | station_to_join,
|  | bool | allow_adjacent
| ) |  |

Place an Airport.

Parameters

  flags | operation to perform
  tile | tile where airport will be built
  airport_type | airport type,

See also
  airport.h

Parameters

  layout | airport layout
  station_to_join | station ID to join (NEW_STATION if build new one)
  allow_adjacent | allow airports directly adjacent to other airports.

Returns
  the cost of this operation or an error

Definition at line 2627 of file station_cmd.cpp.

References _settings_game, OrthogonalTileArea::Add(), AddAnimatedTile(), CommandCost::AddCost(), Station::AddFacility(), Station::AfterStationTileSetChange(), AirportFTAClass::Airplanes, Station::airport, Airport, AirportGetNearestTown(), AirportTileSpec::animation, AT_OILRIG, Airport::blocks, BuildStationPart(), Built, CheckFlatLandAirport(), CheckIfAuthorityAllowsNewStation(), ClosestTownFromTile(), CMD_ERROR, CommandCostWithParam(), GameSettings::difficulty, DIR_E, DIR_W, StationSettings::distant_join_stations, GameSettings::economy, Execute, BaseStation::facilities, CommandCost::Failed(), FindJoiningStation(), GB(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), AirportTileSpec::Get(), AirportSpec::Get(), GetAirport(), GetAirportNoiseLevelForDistance(), SpecializedStation< Station, false >::GetIfValid(), GetTranslatedAirportTileID(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, Invalid, INVALID_TILE, InvalidateWindowData(), AirportSpec::IsAvailable(), SpecializedStation< Station, false >::IsValidID(), AirportSpec::IsWithinMapBounds(), SpecializedStation< Station, false >::Iterate(), Airport::layout, RailStationTileLayout::layout, AirportSpec::layouts, MakeAirport(), Town::MaxTownNoise(), NoAnimation, Town::noise_reached, NUM_AIRPORTS, BaseStation::owner, Random, BaseStation::rect, Airport::rotation, SetStationTileRandomBits(), SetWindowDirty(), AirportSpec::size_x, AirportSpec::size_y, GameSettings::station, EconomySettings::station_noise_level, StationSettings::station_spread, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), OrthogonalTileArea::tile, BaseStation::town, DifficultySettings::town_council_tolerance, Airport::type, UpdateAirplanesOnNewStation(), WC_STATION_VIEW, and WC_TOWN_VIEW.

## ◆ CmdBuildDock()

CommandCost CmdBuildDock | ( | DoCommandFlags | flags,
|  | TileIndex | tile,
|  | StationID | station_to_join,
|  | bool | adjacent
| ) |  |

Build a dock/haven.

Parameters

  flags | operation to perform
  tile | tile where dock will be built
  station_to_join | station ID to join (NEW_STATION if build new one)
  adjacent | allow docks directly adjacent to other docks.

Returns
  the cost of this operation or an error

Definition at line 2892 of file station_cmd.cpp.

References _current_company, _settings_game, OrthogonalTileArea::Add(), CommandCost::AddCost(), Station::AddFacility(), Station::AfterStationTileSetChange(), BuildStationPart(), Canal, CheckIfAuthorityAllowsNewStation(), CMD_ERROR, DiagDirToAxis(), StationSettings::distant_join_stations, Dock, Execute, EXPENSES_CONSTRUCTION, CommandCost::Failed(), FindJoiningStation(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), CommandCost::GetCost(), SpecializedStation< Station, false >::GetIfValid(), GetInclinedSlopeDirection(), GetTileSlope(), GetWaterClass(), GFX_DOCK_BASE_WATER_PART, OrthogonalTileArea::h, HasTileWaterClass(), HasTileWaterGround(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, INVALID_DIAGDIR, IsDockBridgeAboveOk(), IsTileFlat(), IsTileOwner(), IsTileType(), SpecializedStation< Station, false >::IsValidID(), IsWaterTile(), MakeDock(), MP_WATER, BaseStation::owner, BaseStation::rect, ReverseDiagDir(), Station::ship_station, GameSettings::station, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), OrthogonalTileArea::tile, TileOffsByDiagDir(), to_underlying(), ToTileIndexDiff(), and OrthogonalTileArea::w.

## ◆ CmdBuildRailStation()

CommandCost CmdBuildRailStation | ( | DoCommandFlags | flags,
|  | TileIndex | tile_org,
|  | RailType | rt,
|  | Axis | axis,
|  | uint8_t | numtracks,
|  | uint8_t | plat_len,
|  | StationClassID | spec_class,
|  | uint16_t | spec_index,
|  | StationID | station_to_join,
|  | bool | adjacent
| ) |  |

Build rail station.

Parameters

  flags | operation to perform
  tile_org | northern most position of station dragging/placement
  rt | railtype
  axis | orientation (Axis)
  numtracks | number of tracks
  plat_len | platform length
  spec_class | custom station class
  spec_index | custom station id
  station_to_join | station ID to join (NEW_STATION if build new one)
  adjacent | allow stations directly adjacent to other stations.

Returns
  the cost of this operation or an error

Definition at line 1438 of file station_cmd.cpp.

References _current_company, _settings_game, Station::AddFacility(), AddTrackToSignalBuffer(), Station::AfterStationTileSetChange(), AllocateSpecToStation(), AssignSpecToStation(), Avail, AXIS_X, AxisToDiagDir(), AxisToTrack(), BuildStationPart(), Built, BaseStation::cached_anim_triggers, CalculateRailStationCost(), CALLBACK_FAILED, StationSpec::callback_mask, CanExpandRailStation(), CBID_STATION_AVAILABILITY, CBID_STATION_BUILD_TILE_LAYOUT, CheckIfAuthorityAllowsNewStation(), CMD_ERROR, Convert8bitBooleanCallback(), DeallocateSpecFromStation(), DeleteAnimatedTile(), DeleteNewGRFInspectWindow(), StationSpec::disallowed_lengths, StationSpec::disallowed_platforms, StationSettings::distant_join_stations, ErrorUnknownCallbackResult(), Execute, CommandCost::Failed(), FindJoiningStation(), FreeTrainReservation(), GB(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), NewGRFClass< Tspec, Tindex, Tmax >::Get(), NewGRFClass< Tspec, Tindex, Tmax >::GetClassCount(), GetCustomStationSpecIndex(), GetPlatformInfo(), GetRailStationAxis(), GetRailType(), NewGRFClass< Tspec, Tindex, Tmax >::GetSpec(), NewGRFClass< Tspec, Tindex, Tmax >::GetSpecCount(), GetStationGfx(), GetTrainForReservation(), StationSpec::grf_prop, GRFFilePropsBase::grffile, GRFFilePropsBase::grfid, HasBit(), HasStationReservation(), HasStationTileRail(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, Company::infrastructure, INVALID_TILE, IsBridgeAbove(), IsCompatibleTrainStationTile(), IsRailStationBridgeAboveOk(), IsRailStationTile(), IsStationTileBlocked(), IsValidAxis(), SpecializedStation< Station, false >::IsValidID(), IsValidTile(), IsWaypointClass(), MakeRailStation(), Station::MarkTilesDirty(), OtherAxis(), BaseStation::owner, CompanyInfrastructure::rail, Random, BaseStation::rect, RestoreTrainReservation(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set(), SetAnimationFrame(), SetCustomStationSpecIndex(), SetRailStationPlatformReservation(), SetRailStationTileFlags(), SetStationGfx(), SetStationTileRandomBits(), CompanyInfrastructure::station, GameSettings::station, StationSettings::station_spread, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), OrthogonalTileArea::tile, TileAddWrap(), TileOffsByAxis(), TileOffsByDiagDir(), Train, BaseStation::train_station, ValParamRailType(), and YapfNotifyTrackLayoutChange().

## ◆ CmdBuildRoadStop()

CommandCost CmdBuildRoadStop | ( | DoCommandFlags | flags,
|  | TileIndex | tile,
|  | uint8_t | width,
|  | uint8_t | length,
|  | RoadStopType | stop_type,
|  | bool | is_drive_through,
|  | DiagDirection | ddir,
|  | RoadType | rt,
|  | RoadStopClassID | spec_class,
|  | uint16_t | spec_index,
|  | StationID | station_to_join,
|  | bool | adjacent
| ) |  |

Build a bus or truck stop.

Parameters

  flags | Operation to perform.
  tile | Northernmost tile of the stop.
  width | Width of the road stop.
  length | Length of the road stop.
  stop_type | Type of road stop (bus/truck).
  is_drive_through | False for normal stops, true for drive-through.
  ddir | Entrance direction (DiagDirection) for normal stops. Converted to the axis for drive-through stops.
  rt | The roadtype.
  spec_class | Road stop spec class.
  spec_index | Road stop spec index.
  station_to_join | Station ID to join (NEW_STATION if build new one).
  adjacent | Allow stations directly adjacent to other stations.

Returns
  The cost of this operation or an error.

Definition at line 2071 of file station_cmd.cpp.

References _current_company, _settings_game, OrthogonalTileArea::Add(), Station::AddFacility(), Station::AfterStationTileSetChange(), Avail, BuildStationPart(), Built, Bus, Station::bus_station, BusStop, BaseStation::cached_roadstop_anim_triggers, CalculateRoadStopCost(), CALLBACK_FAILED, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_roadstop_pool >::CanAllocateItem(), CBID_STATION_AVAILABILITY, CheckIfAuthorityAllowsNewStation(), CMD_ERROR, Convert8bitBooleanCallback(), CountBits(), DiagDirToAxis(), StationSettings::distant_join_stations, DriveThroughOnly, End, Execute, CommandCost::Failed(), FindJoiningRoadStop(), FindRoadStopSpot(), GB(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), NewGRFClass< Tspec, Tindex, Tmax >::Get(), RoadStopSpec::GetBuildCost(), NewGRFClass< Tspec, Tindex, Tmax >::GetClassCount(), GetRoadBits(), GetRoadOwner(), NewGRFClass< Tspec, Tindex, Tmax >::GetSpec(), NewGRFClass< Tspec, Tindex, Tmax >::GetSpecCount(), RoadStopSpec::grf_prop, GRFFilePropsBase::grffile, OrthogonalTileArea::h, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, INVALID_ROADTYPE, INVALID_TILE, IsNormalRoadTile(), IsStationRoadStop(), IsTileType(), IsValidDiagDirection(), SpecializedStation< Station, false >::IsValidID(), IsValidTile(), IsWaypointClass(), RailStationTileLayout::length, RoadStop::MakeDriveThrough(), MakeDriveThroughRoadStop(), MakeRoadStop(), MarkTileDirtyByTile(), MayHaveRoad(), MP_STATION, BaseStation::owner, Random, BaseStation::rect, RemoveRoadStop(), ROAD_STOP_TRACKBIT_FACTOR, ROADSTOPTYPE_ALL, ROADSTOPTYPE_FREIGHT, ROADSTOPTYPE_PASSENGER, RTT_ROAD, RTT_TRAM, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set(), SetCustomRoadStopSpecIndex(), GameSettings::station, StationSettings::station_spread, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), TileAddWrap(), Truck, Station::truck_station, TruckStop, UpdateCompanyRoadInfrastructure(), ValParamRoadType(), and OrthogonalTileArea::w.

## ◆ CmdMoveStationName()

std::tuple< CommandCost, StationID > CmdMoveStationName | ( | DoCommandFlags | flags,
|  | StationID | station_id,
|  | TileIndex | tile
| ) |  |

Move a station name.

Parameters

  flags | type of operation
  station_id | id of the station
  tile | to move the station name to

Returns
  the cost of this operation or an error and the station ID

Definition at line 4502 of file station_cmd.cpp.

References CheckOwnership(), CMD_ERROR, Execute, CommandCost::Failed(), ForAllStationsRadius(), SpecializedStation< Station, false >::GetIfValid(), Station::MoveSign(), BaseStation::owner, OWNER_NONE, StationRect::PtInExtendedRect(), BaseStation::rect, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), TileX(), TileY(), Station::UpdateVirtCoord(), and BaseStation::xy.

## ◆ CmdOpenCloseAirport()

CommandCost CmdOpenCloseAirport | ( | DoCommandFlags | flags,
|  | StationID | station_id
| ) |  |

Open/close an airport to incoming aircraft.

Parameters

  flags | Operation to perform.
  station_id | Station ID of the airport.

Returns
  the cost of this operation or an error

Definition at line 2836 of file station_cmd.cpp.

References Station::airport, Airport, AirportClosed, Airport::blocks, CheckOwnership(), CMD_ERROR, Execute, BaseStation::facilities, CommandCost::Failed(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Flip(), SpecializedStation< Station, false >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, SpecializedStation< Station, false >::IsValidID(), BaseStation::owner, OWNER_NONE, SetWindowWidgetDirty(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), WC_STATION_VIEW, and WID_SV_CLOSE_AIRPORT.

## ◆ CmdRemoveFromRailStation()

CommandCost CmdRemoveFromRailStation | ( | DoCommandFlags | flags,
|  | TileIndex | start,
|  | TileIndex | end,
|  | bool | keep_rail
| ) |  |

Remove a single tile from a rail station.

This allows for custom-built station with holes and weird layouts

Parameters

  flags | operation to perform
  start | tile of station piece to remove
  end | other edge of the rect to remove
  keep_rail | if set keep the rail

Returns
  the cost of this operation or an error

Definition at line 1855 of file station_cmd.cpp.

References CMD_ERROR, CommandCost::Failed(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, INVALID_TILE, RemoveFromRailBaseStation(), SetWindowWidgetDirty(), Map::Size(), OrthogonalTileArea::tile, BaseStation::train_station, WC_STATION_VIEW, and WID_SV_TRAINS.

## ◆ CmdRemoveFromRailWaypoint()

CommandCost CmdRemoveFromRailWaypoint | ( | DoCommandFlags | flags,
|  | TileIndex | start,
|  | TileIndex | end,
|  | bool | keep_rail
| ) |  |

Remove a single tile from a waypoint.

This allows for custom-built waypoint with holes and weird layouts

Parameters

  flags | operation to perform
  start | tile of waypoint piece to remove
  end | other edge of the rect to remove
  keep_rail | if set keep the rail

Returns
  the cost of this operation or an error

Definition at line 1888 of file station_cmd.cpp.

References CMD_ERROR, RemoveFromRailBaseStation(), and Map::Size().

## ◆ CmdRemoveFromRoadWaypoint()

CommandCost CmdRemoveFromRoadWaypoint | ( | DoCommandFlags | flags,
|  | TileIndex | start,
|  | TileIndex | end
| ) |  |

Remove road waypoints.

Parameters

  flags | operation to perform
  start | tile of road waypoint piece to remove
  end | other edge of the rect to remove

Returns
  the cost of this operation or an error

Definition at line 2505 of file station_cmd.cpp.

References CMD_ERROR, RemoveGenericRoadStop(), and Map::Size().

## ◆ CmdRemoveRoadStop()

CommandCost CmdRemoveRoadStop | ( | DoCommandFlags | flags,
|  | TileIndex | tile,
|  | uint8_t | width,
|  | uint8_t | height,
|  | RoadStopType | stop_type,
|  | bool | remove_road
| ) |  |

Remove bus or truck stops.

Parameters

  flags | Operation to perform.
  tile | Northernmost tile of the removal area.
  width | Width of the removal area.
  height | Height of the removal area.
  stop_type | Type of stop (bus/truck).
  remove_road | Remove roads of drive-through stops?

Returns
  The cost of this operation or an error.

Definition at line 2483 of file station_cmd.cpp.

References Bankrupt, CMD_ERROR, End, INVALID_TILE, IsValidTile(), RemoveGenericRoadStop(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), and TileAddWrap().

## ◆ CmdRenameStation()

CommandCost CmdRenameStation | ( | DoCommandFlags | flags,
|  | StationID | station_id,
|  | const std::string & | text
| ) |  |

Rename a station.

Parameters

  flags | operation to perform
  station_id | station ID that is to be renamed
  text | the new name or an empty string when resetting to the default

Returns
  the cost of this operation or an error

Definition at line 4465 of file station_cmd.cpp.

References BaseStation::cached_name, CheckOwnership(), CMD_ERROR, Execute, CommandCost::Failed(), SpecializedStation< Station, false >::GetIfValid(), InvalidateWindowData(), MAX_LENGTH_STATION_NAME_CHARS, BaseStation::name, BaseStation::owner, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), Station::UpdateVirtCoord(), Utf8StringLength(), and WC_STATION_LIST.

## ◆ CMSAMine()

static bool CMSAMine | ( | TileIndex | tile | ) |
| static

Check whether the tile is a mine.

Parameters

  tile | the tile to investigate.

Returns
  true if and only if the tile is a mine

Definition at line 176 of file station_cmd.cpp.

References BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Any(), CargoSpec::classes, Extractive, CargoSpec::Get(), Industry::GetByTile(), GetIndustrySpec(), IsTileType(), IsValidCargoType(), IndustrySpec::life_type, Liquid, Mail, MP_INDUSTRY, Passengers, Industry::produced, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), and Industry::type.

Referenced by GenerateStationName().

## ◆ CMSATree()

static bool CMSATree | ( | TileIndex | tile | ) |
| static

Check whether the tile is a tree.

Parameters

  tile | the tile to investigate.

Returns
  true if and only if the tile is a tree tile

Definition at line 213 of file station_cmd.cpp.

References IsTileType(), and MP_TREES.

Referenced by GenerateStationName().

## ◆ CMSAWater()

static bool CMSAWater | ( | TileIndex | tile | ) |
| static

Check whether the tile is water.

Parameters

  tile | the tile to investigate.

Returns
  true if and only if the tile is a water tile

Definition at line 203 of file station_cmd.cpp.

References IsTileType(), IsWater(), and MP_WATER.

Referenced by GenerateStationName().

## ◆ CountMapSquareAround()

static int CountMapSquareAround | ( | TileIndex | tile,
|  | CMSAMatcher | cmp
| ) |  |
| static

Counts the numbers of tiles matching a specific type in the area around.

Parameters

  tile | the center tile of the 'count area'
  cmp | the comparator/matcher (

See also
  CMSAMatcher)

Returns
  the number of matching tiles around

Definition at line 157 of file station_cmd.cpp.

References INVALID_TILE, and TileAddWrap().

Referenced by GenerateStationName().

## ◆ DeleteOilRig()

void DeleteOilRig | ( | TileIndex | tile | ) |

Definition at line 4759 of file station_cmd.cpp.

## ◆ DeleteStaleLinks()

void DeleteStaleLinks | ( | Station * | from | ) |

Check all next hops of cargo packets in this station for existence of a a valid link they may use to travel on.

Reroute any cargo not having a valid link and remove timed out links found like this from the linkgraph. We're not all links here as that is expensive and useless. A link no one is using doesn't hurt either.

Parameters

  from | Station to check.

Definition at line 4168 of file station_cmd.cpp.

References _settings_game, LinkGraph::COMPRESSION_INTERVAL, TimerGameEconomy::date, Vehicle::date_of_last_service, FlowStatMap::DeleteFlows(), DistanceManhattan(), DT_MANUAL, GoodsEntry::GoodsEntryData::flows, SpecializedStation< Station, false >::Get(), GoodsEntry::GetData(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_link_graph_pool >::GetIfValid(), Station::goods, GoodsEntry::HasData(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, TimerGameConst< struct Economy >::INVALID_DATE, Vehicle::IsStoppedInDepot(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_orderlist_pool >::Iterate(), LinkGraph::LastCompression(), GoodsEntry::link_graph, GameSettings::linkgraph, LinkGraph::MIN_TIMEOUT_DISTANCE, Vehicle::NextShared(), GoodsEntry::node, NUM_CARGO, RerouteCargo(), FlowStatMap::RestrictFlows(), LinkRefresher::Run(), LinkGraph::STALE_LINK_DEPOT_TIMEOUT, and BaseStation::xy.

## ◆ DeleteStationIfEmpty()

static void DeleteStationIfEmpty | ( | BaseStation * | st | ) |
| static

This is called right after a station was deleted.

It checks if the whole station is free of substations, and if so, the station will be deleted after a little while.

Parameters

  st | Station

Definition at line 724 of file station_cmd.cpp.

References BaseStation::delete_ctr, InvalidateWindowData(), BaseStation::IsInUse(), BaseStation::owner, and WC_STATION_LIST.

Referenced by Station::AfterStationTileSetChange(), RemoveFromRailBaseStation(), and RemoveRoadWaypointStop().

## ◆ DrawCustomStationFoundations()

static bool DrawCustomStationFoundations | ( | const StationSpec * | statspec,
|  | BaseStation * | st,
|  | TileInfo * | ti,
|  | StationGfx | gfx
| ) |  |
| static

Draw custom station foundations for a NewGRF station if provided.

Parameters

  statspec | Custom NewGRF station.
  st | Station being drawn.
  ti | Tile being drawn.
  gfx | Graphics layout for tile.

Returns
  true iff a custom foundation was drawn.

Definition at line 3207 of file station_cmd.cpp.

References AddSortableSpriteToDraw(), CustomFoundations, ExtendedFoundations, StationSpec::flags, GetCustomStationFoundationRelocation(), GetFoundationPixelSlope(), SetBit(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), TileInfo::tile, and TileInfo::tileh.

## ◆ DrawTile_Station()

static void DrawTile_Station | ( | TileInfo * | ti | ) |
| static

Definition at line 3267 of file station_cmd.cpp.

## ◆ FillTileDescAirport()

void FillTileDescAirport | ( | TileIndex | tile,
|  | TileDesc & | td
| ) |  |

Definition at line 3635 of file station_cmd.cpp.

## ◆ FillTileDescRailStation()

void FillTileDescRailStation | ( | TileIndex | tile,
|  | TileDesc & | td
| ) |  |

Definition at line 3616 of file station_cmd.cpp.

## ◆ FillTileDescRoadStop()

static void FillTileDescRoadStop | ( | TileIndex | tile,
|  | TileDesc & | td
| ) |  |
| static

Definition at line 3578 of file station_cmd.cpp.

## ◆ FindDockLandPart()

static TileIndex FindDockLandPart | ( | TileIndex | t | ) |
| static

Find the part of a dock that is land-based.

Parameters

  t | Dock tile to find land part of

Returns
  tile of land part of dock

Definition at line 3022 of file station_cmd.cpp.

References DIAGDIR_BEGIN, DIAGDIR_END, GetDockDirection(), GetStationGfx(), GFX_DOCK_BASE_WATER_PART, INVALID_TILE, IsDockTile(), IsValidTile(), and TileOffsByDiagDir().

Referenced by RemoveDock().

## ◆ FindJoiningBaseStation()

template<class T , StringID error_message, class F >

CommandCost FindJoiningBaseStation | ( | StationID | existing_station,
|  | StationID | station_to_join,
|  | bool | adjacent,
|  | TileArea | ta,
|  | T ** | st,
|  | F | filter
| ) |  |

Find a nearby station that joins this station.

Template Parameters

  T | the class to find a station for
  error_message | the error message when building a station on top of others
  F | the filter functor type

Parameters

  existing_station | an existing station we build over
  station_to_join | the station to join to
  adjacent | whether adjacent stations are allowed
  ta | the area of the newly build station
  st | 'return' pointer for the found station

Returns
  command cost with the error or 'okay'

Definition at line 1257 of file station_cmd.cpp.

References _current_company, CommandCost::Failed(), and GetStationAround().

## ◆ FindJoiningRoadStop()

static CommandCost FindJoiningRoadStop | ( | StationID | existing_stop,
|  | StationID | station_to_join,
|  | bool | adjacent,
|  | TileArea | ta,
|  | Station ** | st
| ) |  |
| static

Find a nearby station that joins this road stop.

Parameters

  existing_stop | an existing road stop we build over
  station_to_join | the station to join to
  adjacent | whether adjacent stations are allowed
  ta | the area of the newly build station
  st | 'return' pointer for the found station

Returns
  command cost with the error or 'okay'

Definition at line 2007 of file station_cmd.cpp.

Referenced by CmdBuildRoadStop().

## ◆ FindJoiningStation()

static CommandCost FindJoiningStation | ( | StationID | existing_station,
|  | StationID | station_to_join,
|  | bool | adjacent,
|  | TileArea | ta,
|  | Station ** | st
| ) |  |
| static

Find a nearby station that joins this station.

Parameters

  existing_station | an existing station we build over
  station_to_join | the station to join to
  adjacent | whether adjacent stations are allowed
  ta | the area of the newly build station
  st | 'return' pointer for the found station

Returns
  command cost with the error or 'okay'

Definition at line 1301 of file station_cmd.cpp.

Referenced by CmdBuildAirport(), CmdBuildDock(), and CmdBuildRailStation().

## ◆ FindJoiningWaypoint()

CommandCost FindJoiningWaypoint | ( | StationID | existing_waypoint,
|  | StationID | waypoint_to_join,
|  | bool | adjacent,
|  | TileArea | ta,
|  | Waypoint ** | wp,
|  | bool | is_road
| ) |  |

Find a nearby waypoint that joins this waypoint.

Parameters

  existing_waypoint | an existing waypoint we build over
  waypoint_to_join | the waypoint to join to
  adjacent | whether adjacent waypoints are allowed
  ta | the area of the newly build waypoint
  wp | 'return' pointer for the found waypoint
  is_road | whether to find a road waypoint

Returns
  command cost with the error or 'okay'

Definition at line 1316 of file station_cmd.cpp.

References HasBit(), Waypoint::waypoint_flags, and WPF_ROAD.

Referenced by CmdBuildRailWaypoint(), and CmdBuildRoadWaypoint().

## ◆ FindRoadStopSpot()

static RoadStop ** FindRoadStopSpot | ( | bool | truck_station,
|  | Station * | st
| ) |  |
| static

Parameters

  truck_station | Determines whether a stop is RoadStopType::Bus or RoadStopType::Truck
  st | The Station to do the whole procedure for

Returns
  a pointer to where to link a new RoadStop*

Definition at line 1980 of file station_cmd.cpp.

References Station::bus_stops, RoadStop::next, and Station::truck_stops.

Referenced by CmdBuildRoadStop().

## ◆ FreeTrainReservation()

static void FreeTrainReservation | ( | Train * | v | ) |
| static

Clear platform reservation during station building/removing.

Parameters

  v | vehicle which holds reservation

Definition at line 1329 of file station_cmd.cpp.

References FreeTrainTrackReservation(), Train::GetVehicleTrackdir(), IsRailStationTile(), SpecializedVehicle< T, Type >::Last(), ReverseTrackdir(), SetRailStationPlatformReservation(), Vehicle::tile, and TrackdirToExitdir().

Referenced by CmdBuildRailStation(), and RemoveFromRailBaseStation().

## ◆ GenerateStationName()

static StringID GenerateStationName | ( | Station * | st,
|  | TileIndex | tile,
|  | StationNaming | name_class
| ) |  |
| static

Remaining station names that can be used when a more specific name has not been used.

Definition at line 245 of file station_cmd.cpp.

References _settings_game, CMSAMine(), CMSATree(), CMSAWater(), CountMapSquareAround(), DistanceFromEdge(), DistanceMax(), IndustrySpec::enabled, GameSettings::game_creation, GetIndustrySpec(), GetIndustryType(), GetTileZ(), Station::indtype, StationNameInformation::indtypes, IsInsideMM(), IsTileForestIndustry(), IsTileType(), SpecializedStation< Station, false >::Iterate(), GameCreationSettings::landscape, MP_INDUSTRY, NUM_INDUSTRYTYPES, IndustrySpec::station_name, TileX(), TileY(), BaseStation::town, and Town::xy.

Referenced by BuildStationPart().

## ◆ GetAcceptanceAroundStation()

static CargoArray GetAcceptanceAroundStation | ( | const Station * | st,
|  | CargoTypes * | always_accepted
| ) |  |
| static

Get the acceptance of cargoes around the station in.

Parameters

  st | Station to get acceptance of.
  always_accepted | bitmask of cargo accepted by houses and headquarters; can be nullptr

Definition at line 593 of file station_cmd.cpp.

References Station::catchment_tiles, and INVALID_TILE.

Referenced by UpdateStationAcceptance().

## ◆ GetAcceptanceAroundTiles()

CargoArray GetAcceptanceAroundTiles | ( | TileIndex | center_tile,
|  | int | w,
|  | int | h,
|  | int | rad,
|  | CargoTypes * | always_accepted
| ) |  |

Get the acceptance of cargoes around the tile in 1/8.

Parameters

  center_tile | Center of the search area
  w | X extent of area
  h | Y extent of area
  rad | Search radius in addition to given area
  always_accepted | bitmask of cargo accepted by houses and headquarters; can be nullptr
  ind | Industry associated with neutral station (e.g. oil rig) or nullptr

Definition at line 571 of file station_cmd.cpp.

References _settings_game, OrthogonalTileArea::Expand(), Industry::GetByTile(), IsTileType(), MP_INDUSTRY, Industry::neutral_station, StationSettings::serve_neutral_industries, and GameSettings::station.

Referenced by DrawStationCoverageAreaText().

## ◆ GetAcceptanceMask()

CargoTypes GetAcceptanceMask | ( | const Station * | st | ) |

Get a mask of the cargo types that the station accepts.

Parameters

  st | Station to query

Returns
  the expected mask

Definition at line 489 of file station_cmd.cpp.

References GoodsEntry::Acceptance, Station::goods, and SetBit().

Referenced by StationViewWindow::DrawAcceptedCargo(), and UpdateStationAcceptance().

## ◆ GetAirportNoiseLevelForDistance()

uint8_t GetAirportNoiseLevelForDistance | ( | const AirportSpec * | as,
|  | uint | distance
| ) |  |

Get a possible noise reduction factor based on distance from town center.

The further you get, the less noise you generate. So all those folks at city council can now happily slee... work in their offices

Parameters

  as | airport information
  distance | minimum distance between town and airport

Returns
  the noise that will be generated, according to distance

Definition at line 2523 of file station_cmd.cpp.

References _settings_game, GameSettings::difficulty, AirportSpec::noise_level, and DifficultySettings::town_council_tolerance.

Referenced by CmdBuildAirport(), RemoveAirport(), and UpdateAirportsNoise().

## ◆ GetBridgeTooLowMessageForStationType()

static StringID GetBridgeTooLowMessageForStationType | ( | StationType | type | ) |
| static

Get station-type-specific string for a bridge that is too low.

Parameters

  type | Station type.

Returns
  bridge too low string.

Definition at line 861 of file station_cmd.cpp.

References INVALID_STRING_ID, and to_underlying().

Referenced by IsStationBridgeAboveOk().

## ◆ GetClosestDeletedStation()

static Station * GetClosestDeletedStation | ( | TileIndex | tile | ) |
| static

Find the closest deleted station of the current company.

Parameters

  tile | the tile to search from.

Returns
  the closest station or nullptr if too far.

Definition at line 393 of file station_cmd.cpp.

References _current_company, ForAllStationsRadius(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, BaseStation::IsInUse(), and BaseStation::owner.

Referenced by BuildStationPart().

## ◆ GetEmptyMask()

CargoTypes GetEmptyMask | ( | const Station * | st | ) |

Get a mask of the cargo types that are empty at the station.

Parameters

  st | Station to query

Returns
  the empty mask

Definition at line 504 of file station_cmd.cpp.

References Station::goods, and SetBit().

Referenced by TriggerRoadStopRandomisation(), and TriggerStationRandomisation().

## ◆ GetFoundation_Station()

static Foundation GetFoundation_Station | ( | TileIndex | ,
|  | Slope | tileh
| ) |  |
| static

Definition at line 3573 of file station_cmd.cpp.

## ◆ GetProductionAroundTiles()

CargoArray GetProductionAroundTiles | ( | TileIndex | north_tile,
|  | int | w,
|  | int | h,
|  | int | rad
| ) |  |

Get the cargo types being produced around the tile (in a rectangle).

Parameters

  north_tile | Northern most tile of area
  w | X extent of the area
  h | Y extent of the area
  rad | Search radius in addition to the given area

Definition at line 533 of file station_cmd.cpp.

References _settings_game, OrthogonalTileArea::Expand(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_industry_pool >::Get(), GetIndustryIndex(), FlatSet< Tkey, Tcompare >::insert(), IsTileType(), IsValidCargoType(), MP_INDUSTRY, Industry::neutral_station, Industry::produced, StationSettings::serve_neutral_industries, and GameSettings::station.

Referenced by DrawStationCoverageAreaText().

## ◆ GetSlopePixelZ_Station()

static int GetSlopePixelZ_Station | ( | TileIndex | tile,
|  | uint | ,
|  | uint | ,
|  | bool |
| ) |  |
| static

Definition at line 3568 of file station_cmd.cpp.

## ◆ GetStationAround()

template<class T , class F >

CommandCost GetStationAround | ( | TileArea | ta,
|  | StationID | closest_station,
|  | CompanyID | company,
|  | T ** | st,
|  | F | filter
| ) |  |

Look for a station owned by the given company around the given tile area.

Parameters

  ta | the area to search over
  closest_station | the closest owned station found so far
  company | the company whose stations to look for
  st | to 'return' the found station
  filter | Filter function

Returns
  Succeeded command (if zero or one station found) or failed command (for two or more stations found).

Definition at line 124 of file station_cmd.cpp.

References OrthogonalTileArea::Expand(), GetStationIndex(), IsTileType(), and MP_STATION.

Referenced by FindJoiningBaseStation().

## ◆ GetStationBlockedPillars()

static BridgePillarFlags GetStationBlockedPillars | ( | std::span< const BridgeableTileInfo > | bridgeable_info,
|  | uint8_t | layout
| ) |  |
| static

Get blocked pillar information for a station tile.

Parameters

  bridgeable_info |
  layout | Tile layout of rail station.

Returns
  blocked pillar information.

Definition at line 3193 of file station_cmd.cpp.

References RailStationTileLayout::layout.

## ◆ GetStationBridgeableTileInfo()

static std::span< const BridgeableTileInfo > GetStationBridgeableTileInfo | ( | StationType | type | ) |
| static

Get bridgeable tile information for a station type.

Parameters

  type | Station type.

Returns
  bridgeable tile information.

Definition at line 909 of file station_cmd.cpp.

References to_underlying().

Referenced by IsBuoyBridgeAboveOk(), IsDockBridgeAboveOk(), IsRailStationBridgeAboveOk(), and IsRoadStationBridgeAboveOk().

## ◆ GetStationTileFlags()

static StationSpec::TileFlags GetStationTileFlags | ( | StationGfx | gfx,
|  | const StationSpec * | statspec
| ) |  |
| static

Get station tile flags for the given StationGfx.

Parameters

  gfx | StationGfx of station tile.
  statspec | Station spec of station tile.

Returns
  Tile flags to apply.

Definition at line 1404 of file station_cmd.cpp.

References StationSpec::Pylons, and StationSpec::tileflags.

Referenced by SetRailStationTileFlags().

## ◆ GetStationTileLayout()

const DrawTileSprites * GetStationTileLayout | ( | StationType | st,
|  | uint8_t | gfx
| ) |  |

Get station tile layout for a station type and its station gfx.

Parameters

  st | Station type to draw.
  gfx | StationGfx of tile to draw.

Returns
  Tile layout to draw.

Definition at line 3115 of file station_cmd.cpp.

References to_underlying().

Referenced by DrawStationTile().

## ◆ GetTileDesc_Station()

static void GetTileDesc_Station | ( | TileIndex | tile,
|  | TileDesc & | td
| ) |  |
| static

Definition at line 3653 of file station_cmd.cpp.

## ◆ GetTileTrackStatus_Station()

static TrackStatus GetTileTrackStatus_Station | ( | TileIndex | tile,
|  | TransportType | mode,
|  | uint | sub_mode,
|  | DiagDirection | side
| ) |  |
| static

Definition at line 3688 of file station_cmd.cpp.

## ◆ HasStationInUse()

bool HasStationInUse | ( | StationID | station,
|  | bool | include_company,
|  | CompanyID | company
| ) |  |

Tests whether the company's vehicles have this station in orders.

Parameters

  station | station ID
  include_company | If true only check vehicles of company, if false only check vehicles of other companies
  company | company ID

Definition at line 2859 of file station_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_orderlist_pool >::Iterate(), and Vehicle::owner.

Referenced by CompanyStationsWindow::BuildStationsList(), and RemoveBuoy().

## ◆ IncreaseStats() [1/2]

void IncreaseStats | ( | Station * | st,
|  | CargoType | cargo,
|  | StationID | next_station_id,
|  | uint | capacity,
|  | uint | usage,
|  | uint32_t | time,
|  | EdgeUpdateModes | modes
| ) |  |

Increase capacity for a link stat given by station cargo and next hop.

Parameters

  st | Station to get the link stats from.
  cargo | Cargo to increase stat for.
  next_station_id | Station the consist will be travelling to next.
  capacity | Capacity to add to link stat.
  usage | Usage to add to link stat.
  mode | Update mode to be applied.

Definition at line 4262 of file station_cmd.cpp.

References LinkGraph::AddNode(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_link_graph_pool >::CanAllocateItem(), Debug, LinkGraphSchedule::Dequeue(), SpecializedStation< Station, false >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_link_graph_pool >::Get(), Station::goods, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, LinkGraphSchedule::instance, GoodsEntry::link_graph, LinkGraph::Merge(), GoodsEntry::node, LinkGraphSchedule::Queue(), and LinkGraph::Size().

Referenced by Vehicle::BeginLoading(), IncreaseStats(), and LinkRefresher::RefreshStats().

## ◆ IncreaseStats() [2/2]

void IncreaseStats | ( | Station * | st,
|  | const Vehicle * | front,
|  | StationID | next_station_id,
|  | uint32_t | time
| ) |  |

Increase capacity for all link stats associated with vehicles in the given consist.

Parameters

  st | Station to get the link stats from.
  front | First vehicle in the consist.
  next_station_id | Station the consist will be travelling to next.

Definition at line 4314 of file station_cmd.cpp.

References Vehicle::cargo, Vehicle::cargo_type, Increase, IncreaseStats(), Vehicle::Next(), Vehicle::refit_cap, and VehicleCargoList::StoredCount().

## ◆ IsBuoyBridgeAboveOk()

CommandCost IsBuoyBridgeAboveOk | ( | TileIndex | tile | ) |

Test if a buoy can be built below a bridge.

Parameters

  tile | Tile to test.

Returns
  Command result.

Definition at line 968 of file station_cmd.cpp.

References GetBridgeHeight(), GetSouthernBridgeEnd(), GetStationBridgeableTileInfo(), IsBridgeAbove(), and IsStationBridgeAboveOk().

Referenced by CmdBuildBuoy().

## ◆ IsDockBridgeAboveOk()

static CommandCost IsDockBridgeAboveOk | ( | TileIndex | tile,
|  | StationGfx | layout
| ) |  |
| static

Test if a dock can be built below a bridge.

Parameters

  tile | Tile to test.
  layout | Layout piece of station to test.

Returns
  Command result.

Definition at line 954 of file station_cmd.cpp.

References GetBridgeHeight(), GetSouthernBridgeEnd(), GetStationBridgeableTileInfo(), IsBridgeAbove(), and IsStationBridgeAboveOk().

Referenced by CmdBuildDock().

## ◆ IsHangar()

bool IsHangar | ( | Tile | t | ) |

Check whether the given tile is a hangar.

Parameters

  t | the tile to of whether it is a hangar.

Precondition
  IsTileType(t, MP_STATION)

Returns
  true if and only if the tile is a hangar.

Definition at line 97 of file station_cmd.cpp.

References Station::airport, AirportSpec::depots, BaseStation::GetByTile(), Airport::GetRotatedTileFromOffset(), Airport::GetSpec(), IsAirport(), IsTileType(), and MP_STATION.

Referenced by IsHangarTile().

## ◆ IsRailStationBridgeAboveOk()

CommandCost IsRailStationBridgeAboveOk | ( | TileIndex | tile,
|  | const StationSpec * | spec,
|  | StationType | type,
|  | StationGfx | layout
| ) |  |

Test if a rail station can be built below a bridge.

Parameters

  tile | Tile to test.
  spec | Custom station spec to test.
  type | Type of rail station.
  layout | Layout piece of station to test.

Returns
  Command result.

Definition at line 922 of file station_cmd.cpp.

References StationSpec::bridgeable_info, GetBridgeHeight(), GetSouthernBridgeEnd(), GetStationBridgeableTileInfo(), IsBridgeAbove(), and IsStationBridgeAboveOk().

Referenced by CmdBuildRailStation(), and CmdBuildRailWaypoint().

## ◆ IsRoadStationBridgeAboveOk()

CommandCost IsRoadStationBridgeAboveOk | ( | TileIndex | tile,
|  | const RoadStopSpec * | spec,
|  | StationType | type,
|  | StationGfx | layout
| ) |  |

Test if a road station can be built below a bridge.

Parameters

  tile | Tile to test.
  spec | Custom roadstop spec to test.
  type | Type of road station.
  layout | Layout piece of station to test.

Returns
  Command result.

Definition at line 939 of file station_cmd.cpp.

References RoadStopSpec::bridgeable_info, GetBridgeHeight(), GetSouthernBridgeEnd(), GetStationBridgeableTileInfo(), IsBridgeAbove(), and IsStationBridgeAboveOk().

Referenced by CheckFlatLandRoadStop().

## ◆ IsStationBridgeAboveOk()

static CommandCost IsStationBridgeAboveOk | ( | TileIndex | tile,
|  | std::span< const BridgeableTileInfo > | bridgeable_info,
|  | StationType | type,
|  | StationGfx | layout,
|  | int | bridge_height,
|  | StringID | disallowed_msg = `INVALID_STRING_ID`
| ) |  |
| static

Test if a bridge can be built above a station.

Parameters

  tile | Tile to test.
  spec | Custom station spec to test.
  type | Type of station.
  layout | Layout piece of road station to test.
  bridge_height | Height of bridge to test.
  disallowed_msg | Error message if bridge is disallowed.

Returns
  Command result.

Definition at line 887 of file station_cmd.cpp.

References Auto, CommandCostWithParam(), GetBridgeTooLowMessageForStationType(), GetTileMaxZ(), INVALID_STRING_ID, and TILE_HEIGHT_STEP.

Referenced by IsBuoyBridgeAboveOk(), IsDockBridgeAboveOk(), IsRailStationBridgeAboveOk(), and IsRoadStationBridgeAboveOk().

## ◆ IsUniqueStationName()

static bool IsUniqueStationName | ( | const std::string & | name | ) |
| static

Definition at line 4449 of file station_cmd.cpp.

## ◆ MakeRailStationAreaSmaller()

static void MakeRailStationAreaSmaller | ( | BaseStation * | st | ) |
| static

Definition at line 1711 of file station_cmd.cpp.

## ◆ MakeRoadWaypointStationAreaSmaller()

void MakeRoadWaypointStationAreaSmaller | ( | BaseStation * | st,
|  | TileArea & | road_waypoint_area
| ) |  |

Definition at line 1732 of file station_cmd.cpp.

## ◆ MakeShipStationAreaSmaller()

static void MakeShipStationAreaSmaller | ( | Station * | st | ) |
| static

Definition at line 1721 of file station_cmd.cpp.

## ◆ MakeStationAreaSmaller()

static TileArea MakeStationAreaSmaller | ( | BaseStation * | st,
|  | TileArea | ta,
|  | bool(*)(BaseStation *, TileIndex) | func
| ) |  |
| static

Definition at line 1656 of file station_cmd.cpp.

## ◆ ModifyStationRatingAround()

void ModifyStationRatingAround | ( | TileIndex | tile,
|  | Owner | owner,
|  | int | amount,
|  | uint | radius
| ) |  |

Forcibly modify station ratings near a given tile.

Used when a crash hurts a company's station ratings nearby, or when local authority actions affect nearby ratings.

Parameters

  tile | The center of the ratings change area.
  owner | The station owner whose stations are affected.
  amount | The amount to change the rating.
  radius | The radius to search for stations, from the origin tile.

Definition at line 4388 of file station_cmd.cpp.

References DistanceManhattan(), ForAllStationsRadius(), BaseStation::owner, and BaseStation::xy.

Referenced by CheckTrainCollision(), CrashAirplane(), TownActionAdvertiseLarge(), TownActionAdvertiseMedium(), TownActionAdvertiseSmall(), and TownActionBuyRights().

## ◆ MoveGoodsToStation()

uint MoveGoodsToStation | ( | CargoType | cargo,
|  | uint | amount,
|  | Source | source,
|  | const StationList & | all_stations,
|  | Owner | exclusivity
| ) |  |

Definition at line 4599 of file station_cmd.cpp.

## ◆ OnTick_Station()

void OnTick_Station | ( |  | ) |

Definition at line 4342 of file station_cmd.cpp.

## ◆ RemoveAirport()

static CommandCost RemoveAirport | ( | TileIndex | tile,
|  | DoCommandFlags | flags
| ) |  |
| static

Remove an airport.

Parameters

  tile | TileIndex been queried
  flags | operation to perform

Returns
  cost or failure of operation

Definition at line 2755 of file station_cmd.cpp.

References _current_company, _settings_game, CommandCost::AddCost(), Station::AfterStationTileSetChange(), Station::airport, Airport, AirportGetNearestTown(), CheckOwnership(), OrthogonalTileArea::Clear(), CloseWindowById(), DeleteNewGRFInspectWindow(), GameSettings::economy, EnsureNoVehicleOnGround(), Execute, EXPENSES_CONSTRUCTION, BaseStation::facilities, CommandCost::Failed(), FLYING, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), GetAirportNoiseLevelForDistance(), BaseStation::GetByTile(), Airport::GetHangarTile(), Airport::GetNumHangars(), Airport::GetSpec(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, InvalidateWindowData(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_vehicle_pool >::Iterate(), Town::noise_reached, BaseStation::owner, OWNER_WATER, Airport::psa, BaseStation::rect, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), OrderBackup::Reset(), SetWindowClassesDirty(), SetWindowDirty(), EconomySettings::station_noise_level, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), OrthogonalTileArea::tile, WC_STATION_VIEW, WC_TOWN_VIEW, WC_VEHICLE_DEPOT, and WC_VEHICLE_ORDERS.

Referenced by ClearTile_Station().

## ◆ RemoveDock()

static CommandCost RemoveDock | ( | TileIndex | tile,
|  | DoCommandFlags | flags
| ) |  |
| static

Remove a dock.

Parameters

  tile | TileIndex been queried
  flags | operation to perform

Returns
  cost or failure of operation

Definition at line 3045 of file station_cmd.cpp.

References Station::AfterStationTileSetChange(), CheckOwnership(), OrthogonalTileArea::Clear(), ClearDockingTilesCheckingNeighbours(), CMD_ERROR, Dock, Station::docking_station, EnsureNoVehicleOnGround(), Execute, EXPENSES_CONSTRUCTION, BaseStation::facilities, CommandCost::Failed(), FindDockLandPart(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), BaseStation::GetByTile(), GetDockDirection(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, INVALID_TILE, IsDockingTile(), IsDockTile(), IsShipDestinationTile(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_vehicle_pool >::Iterate(), MarkTileDirtyByTile(), BaseStation::owner, BaseStation::rect, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), SetWindowClassesDirty(), Station::ship_station, CommandCost::Succeeded(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), OrthogonalTileArea::tile, TileOffsByDiagDir(), and WC_VEHICLE_ORDERS.

Referenced by ClearTile_Station().

## ◆ RemoveDockingTile()

void RemoveDockingTile | ( | TileIndex | t | ) |

Definition at line 2980 of file station_cmd.cpp.

## ◆ RemoveFromRailBaseStation()

template<class T >

CommandCost RemoveFromRailBaseStation | ( | TileArea | ta,
|  | std::vector< T * > & | affected_stations,
|  | DoCommandFlags | flags,
|  | Money | removal_cost,
|  | bool | keep_rail
| ) |  |

Remove a number of tiles from any rail station within the area.

Parameters

  ta | the area to clear station tile from.
  affected_stations | the stations affected.
  flags | the command flags.
  removal_cost | the cost for removing the tile, including the rail.
  keep_rail | whether to keep the rail of the station.

Template Parameters

  T | the type of station to remove.

Returns
  the number of cleared tiles or an error.

Definition at line 1748 of file station_cmd.cpp.

References _current_company, CommandCost::AddCost(), AddTrackToSignalBuffer(), CheckOwnership(), DeallocateSpecFromStation(), DeleteNewGRFInspectWindow(), DeleteStationIfEmpty(), DirtyCompanyInfrastructureWindows(), EnsureNoVehicleOnGround(), Execute, EXPENSES_CONSTRUCTION, BaseStation::facilities, CommandCost::Failed(), FreeTrainReservation(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), GetCustomStationSpecIndex(), GetRailStationTrack(), GetRailType(), GetTileOwner(), GetTrainForReservation(), HasStationReservation(), HasStationTileRail(), include(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, INVALID_TILE, IsStationTileBlocked(), OWNER_WATER, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), RestoreTrainReservation(), SetWindowClassesDirty(), SetWindowWidgetDirty(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), OrthogonalTileArea::tile, TrackToTrackBits(), Train, BaseStation::train_station, BaseStation::UpdateVirtCoord(), WC_STATION_VIEW, WC_VEHICLE_ORDERS, WID_SV_TRAINS, and YapfNotifyTrackLayoutChange().

Referenced by CmdRemoveFromRailStation(), CmdRemoveFromRailWaypoint(), and RemoveRailStation().

## ◆ RemoveGenericRoadStop()

static CommandCost RemoveGenericRoadStop | ( | DoCommandFlags | flags,
|  | const TileArea & | roadstop_area,
|  | bool | road_waypoint,
|  | bool | remove_road
| ) |  |
| static

Remove a tile area of road stop or road waypoints.

Parameters

  flags | operation to perform
  roadstop_area | tile area of road stop or road waypoint tiles to remove
  road_waypoint | Whether to remove road waypoints or road stops
  remove_road | Remove roads of drive-through stops?

Returns
  the cost of this operation or an error

Definition at line 2420 of file station_cmd.cpp.

References _current_company, CommandCost::AddCost(), AxisToRoadBits(), ClosestTownFromTile(), CountBits(), Execute, EXPENSES_CONSTRUCTION, CommandCost::Failed(), CommandCost::GetCost(), GetDriveThroughStopAxis(), GetRoadOwner(), INVALID_ROADTYPE, IsAnyRoadStop(), IsDriveThroughStopTile(), IsRoadWaypoint(), IsTileType(), MakeRoadNormal(), MP_STATION, OWNER_NONE, RemoveRoadStop(), RemoveRoadWaypointStop(), ROAD_NONE, RTT_ROAD, RTT_TRAM, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), and UpdateCompanyRoadInfrastructure().

Referenced by CmdRemoveFromRoadWaypoint(), and CmdRemoveRoadStop().

## ◆ RemoveRailStation() [1/2]

template<class T >

CommandCost RemoveRailStation | ( | T * | st,
|  | DoCommandFlags | flags,
|  | Money | removal_cost
| ) |  |

Remove a rail station/waypoint.

Parameters

  st | The station/waypoint to remove the rail part from
  flags | operation to perform
  removal_cost | the cost for removing a tile

Template Parameters

  T | the type of station to remove

Returns
  cost or failure of operation

Definition at line 1909 of file station_cmd.cpp.

References _current_company, CommandCost::AddCost(), CheckOwnership(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), CommandCost::GetCost(), OrthogonalTileArea::h, OWNER_WATER, RemoveFromRailBaseStation(), and OrthogonalTileArea::w.

Referenced by ClearTile_Station(), RemoveRailStation(), and RemoveRailWaypoint().

## ◆ RemoveRailStation() [2/2]

static CommandCost RemoveRailStation | ( | TileIndex | tile,
|  | DoCommandFlags | flags
| ) |  |
| static

Remove a rail station.

Parameters

  tile | Tile of the station.
  flags | operation to perform

Returns
  cost or failure of operation

Definition at line 1943 of file station_cmd.cpp.

References _current_company, Execute, BaseStation::GetByTile(), OWNER_WATER, Station::RecomputeCatchment(), RemoveRailStation(), and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

## ◆ RemoveRailWaypoint()

static CommandCost RemoveRailWaypoint | ( | TileIndex | tile,
|  | DoCommandFlags | flags
| ) |  |
| static

Remove a rail waypoint.

Parameters

  tile | Tile of the waypoint.
  flags | operation to perform

Returns
  cost or failure of operation

Definition at line 1964 of file station_cmd.cpp.

References _current_company, Execute, BaseStation::GetByTile(), OWNER_WATER, and RemoveRailStation().

Referenced by ClearTile_Station().

## ◆ RemoveRoadStop()

static CommandCost RemoveRoadStop | ( | TileIndex | tile,
|  | DoCommandFlags | flags,
|  | int | replacement_spec_index
| ) |  |
| static

Remove a bus station/truck stop.

Parameters

  tile | TileIndex been queried
  flags | operation to perform
  replacement_spec_index | replacement spec index to avoid deallocating, if < 0, tile is not being replaced

Returns
  cost or failure of operation

Definition at line 2230 of file station_cmd.cpp.

References _current_company, OrthogonalTileArea::Add(), Station::AfterStationTileSetChange(), Bankrupt, Bus, Station::bus_station, Station::bus_stops, BusStop, CheckOwnership(), OrthogonalTileArea::Clear(), RoadStop::ClearDriveThrough(), Vehicle::current_order, DeleteAnimatedTile(), DeleteNewGRFInspectWindow(), Vehicle::dest_tile, DirtyCompanyInfrastructureWindows(), EnsureNoVehicleOnGround(), Execute, EXPENSES_CONSTRUCTION, BaseStation::facilities, CommandCost::Failed(), FindVehiclesWithOrder(), SpecializedVehicle< T, Type >::From(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), BaseStation::GetByTile(), RoadStop::GetByTile(), RoadStopSpec::GetClearCost(), GetCustomRoadStopSpecIndex(), Vehicle::GetOrderStationLocation(), GetRoadOwner(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, IsDriveThroughStopTile(), IsTruckStop(), Order::IsType(), RoadStop::next, BaseStation::owner, OWNER_WATER, BaseStation::rect, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), ROAD_STOP_TRACKBIT_FACTOR, RVS_IN_DT_ROAD_STOP, RVSB_ROAD_STOP_TRACKDIR_MASK, SetWindowClassesDirty(), RoadVehicle::state, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), Truck, Station::truck_station, Station::truck_stops, TruckStop, BaseVehicle::type, UpdateCompanyRoadInfrastructure(), VEH_ROAD, and WC_VEHICLE_ORDERS.

Referenced by ClearTile_Station(), CmdBuildRoadStop(), and RemoveGenericRoadStop().

## ◆ RemoveRoadWaypointStop()

CommandCost RemoveRoadWaypointStop | ( | TileIndex | tile,
|  | DoCommandFlags | flags,
|  | int | replacement_spec_index
| ) |  |

Remove a road waypoint.

Parameters

  tile | TileIndex been queried
  flags | operation to perform
  replacement_spec_index | replacement spec index to avoid deallocating, if < 0, tile is not being replaced

Returns
  cost or failure of operation

Definition at line 2356 of file station_cmd.cpp.

References _current_company, Bankrupt, BusStop, CheckOwnership(), DeleteNewGRFInspectWindow(), DeleteStationIfEmpty(), DirtyCompanyInfrastructureWindows(), EnsureNoVehicleOnGround(), Execute, EXPENSES_CONSTRUCTION, BaseStation::facilities, CommandCost::Failed(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::Get(), BaseStation::GetByTile(), RoadStopSpec::GetClearCost(), GetCustomRoadStopSpecIndex(), GetRoadOwner(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, INVALID_TILE, BaseStation::owner, OWNER_WATER, BaseStation::rect, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), ROAD_STOP_TRACKBIT_FACTOR, Waypoint::road_waypoint_area, SetWindowWidgetDirty(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), OrthogonalTileArea::tile, TruckStop, UpdateCompanyRoadInfrastructure(), Waypoint::UpdateVirtCoord(), WC_STATION_VIEW, and WID_SV_ROADVEHS.

Referenced by ClearTile_Station(), CmdBuildRoadWaypoint(), and RemoveGenericRoadStop().

## ◆ RerouteCargo()

void RerouteCargo | ( | Station * | st,
|  | CargoType | cargo,
|  | StationID | avoid,
|  | StationID | avoid2
| ) |  |

Reroute cargo of type c at station st or in any vehicles unloading there.

Make sure the cargo's new next hop is neither "avoid" nor "avoid2".

Parameters

  st | Station to be rerouted at.
  cargo | Type of cargo.
  avoid | Original next hop of cargo, avoid this.
  avoid2 | Another station to be avoided when rerouting.

Definition at line 4144 of file station_cmd.cpp.

References GoodsEntry::GoodsEntryData::cargo, GoodsEntry::GetData(), Station::goods, GoodsEntry::HasData(), Vehicle::Next(), and StationCargoList::Reroute().

Referenced by DeleteStaleLinks(), LinkGraphJob::~LinkGraphJob(), and Station::~Station().

## ◆ RestoreTrainReservation()

static void RestoreTrainReservation | ( | Train * | v | ) |
| static

Restore platform reservation during station building/removing.

Parameters

  v | vehicle which held reservation

Definition at line 1341 of file station_cmd.cpp.

References Train::GetVehicleTrackdir(), IsRailStationTile(), SpecializedVehicle< T, Type >::Last(), ReverseTrackdir(), SetRailStationPlatformReservation(), Vehicle::tile, TrackdirToExitdir(), and TryPathReserve().

Referenced by CmdBuildRailStation(), and RemoveFromRailBaseStation().

## ◆ SetRailStationTileFlags()

void SetRailStationTileFlags | ( | TileIndex | tile,
|  | const StationSpec * | statspec
| ) |  |

Set rail station tile flags for the given tile.

Parameters

  tile | Tile to set flags on.
  statspec | Statspec of the tile.

Definition at line 1416 of file station_cmd.cpp.

References StationSpec::Blocked, GetStationGfx(), GetStationTileFlags(), StationSpec::NoWires, StationSpec::Pylons, SetStationTileBlocked(), SetStationTileHavePylons(), and SetStationTileHaveWires().

Referenced by CmdBuildRailStation(), and CmdBuildRailWaypoint().

## ◆ ShowRejectOrAcceptNews()

static void ShowRejectOrAcceptNews | ( | const Station * | st,
|  | CargoTypes | cargoes,
|  | bool | reject
| ) |  |
| static

Add news item for when a station changes which cargoes it accepts.

Parameters

  st | Station of cargo change.
  cargoes | Bit mask of cargo types to list.
  reject | True iff the station rejects the cargo types.

Definition at line 520 of file station_cmd.cpp.

References Acceptance, AddNewsItem(), GetEncodedString(), InColour, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, and Small.

Referenced by UpdateStationAcceptance().

## ◆ SplitGroundSpriteForOverlay()

bool SplitGroundSpriteForOverlay | ( | const TileInfo * | ti,
|  | SpriteID * | ground,
|  | RailTrackOffset * | overlay_offset
| ) |  |

Check whether a sprite is a track sprite, which can be replaced by a non-track ground sprite and a rail overlay.

If the ground sprite is suitable, ground is replaced with the new non-track ground sprite, and overlay_offset is set to the overlay to draw.

Parameters

  | ti | Positional info for the tile to decide snowyness etc. May be nullptr.
  [in,out] | ground | Groundsprite to draw.
  [out] | overlay_offset | Overlay to draw.

Returns
  true if overlay can be drawn.

Definition at line 3131 of file station_cmd.cpp.

References _settings_game, GameSettings::game_creation, GetSnowLine(), GetTropicZone(), GameCreationSettings::landscape, RTO_X, RTO_Y, TileInfo::tile, TILE_HEIGHT, TROPICZONE_DESERT, and Coord3D< T >::z.

Referenced by DrawStationTile().

## ◆ StationHandleBigTick()

static bool StationHandleBigTick | ( | BaseStation * | st | ) |
| static

This function is called for each station once every 250 ticks.

Not all stations will get the tick at the same time.

Parameters

  st | the station receiving the tick.

Returns
  true if the station is still valid (wasn't deleted)

Definition at line 3918 of file station_cmd.cpp.

References GoodsEntry::AcceptedBigtick, BaseStation::delete_ctr, BaseStation::facilities, SpecializedStation< Station, false >::From(), Station::goods, SpecializedStation< Station, false >::IsExpected(), BaseStation::IsInUse(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), TriggerWatchedCargoCallbacks(), UpdateStationAcceptance(), and Waypoint.

## ◆ StationHandleSmallTick()

static void StationHandleSmallTick | ( | BaseStation * | st | ) |
| static

Definition at line 4331 of file station_cmd.cpp.

## ◆ StationPickerDrawSprite()

void StationPickerDrawSprite | ( | int | x,
|  | int | y,
|  | StationType | st,
|  | RailType | railtype,
|  | RoadType | roadtype,
|  | int | image
| ) |  |

Definition at line 3517 of file station_cmd.cpp.

## ◆ TerraformTile_Station()

static CommandCost TerraformTile_Station | ( | TileIndex | tile,
|  | DoCommandFlags | flags,
|  | int | z_new,
|  | Slope | tileh_new
| ) |  |
| static

Definition at line 4946 of file station_cmd.cpp.

## ◆ TileBelongsToRailStation()

static bool TileBelongsToRailStation | ( | BaseStation * | st,
|  | TileIndex | tile
| ) |  |
| static

Definition at line 1706 of file station_cmd.cpp.

## ◆ TileBelongsToRoadWaypointStation()

static bool TileBelongsToRoadWaypointStation | ( | BaseStation * | st,
|  | TileIndex | tile
| ) |  |
| static

Definition at line 1727 of file station_cmd.cpp.

## ◆ TileBelongsToShipStation()

static bool TileBelongsToShipStation | ( | BaseStation * | st,
|  | TileIndex | tile
| ) |  |
| static

Definition at line 1716 of file station_cmd.cpp.

## ◆ TileLoop_Station()

static void TileLoop_Station | ( | TileIndex | tile | ) |
| static

Definition at line 3735 of file station_cmd.cpp.

## ◆ TriggerWatchedCargoCallbacks()

void TriggerWatchedCargoCallbacks | ( | Station * | st | ) |

Run the watched cargo callback for all houses in the catchment area.

Parameters

  st | Station.

Definition at line 3892 of file station_cmd.cpp.

References GoodsEntry::AcceptedBigtick, Station::catchment_tiles, Station::goods, INVALID_TILE, IsTileType(), MP_HOUSE, NUM_CARGO, SetBit(), and TriggerHouseAnimation_WatchedCargoAccepted().

Referenced by StationHandleBigTick().

## ◆ TruncateCargo()

static void TruncateCargo | ( | const CargoSpec * | cs,
|  | GoodsEntry * | ge,
|  | uint | amount = `UINT_MAX`
| ) |  |
| static

Truncate the cargo by a specific amount.

Parameters

  cs | The type of cargo to perform the truncation for.
  ge | The goods entry, of the station, to truncate.
  amount | The amount to truncate the cargo by.

Definition at line 3951 of file station_cmd.cpp.

References GoodsEntry::GoodsEntryData::cargo, GoodsEntry::GetData(), SpecializedStation< Station, false >::GetIfValid(), Station::goods, GoodsEntry::HasData(), CargoSpec::Index(), GoodsEntry::max_waiting_cargo, and StationCargoList::Truncate().

Referenced by UpdateStationRating().

## ◆ UpdateAirportsNoise()

void UpdateAirportsNoise | ( |  | ) |

Recalculate the noise generated by the airports of each town.

Definition at line 2604 of file station_cmd.cpp.

References AirportGetNearestTown(), AT_OILRIG, GetAirportNoiseLevelForDistance(), INVALID_TILE, SpecializedStation< Station, false >::Iterate(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_town_pool >::Iterate(), and Town::noise_reached.

Referenced by DoCreateTown(), and InitializeWindowsAndCaches().

## ◆ UpdateAllStationVirtCoords()

void UpdateAllStationVirtCoords | ( |  | ) |

Update the virtual coords needed to draw the station sign for all stations.

Definition at line 464 of file station_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_station_pool >::Iterate().

Referenced by CmdRenameTown(), and UpdateAllVirtCoords().

## ◆ UpdateStationAcceptance()

void UpdateStationAcceptance | ( | Station * | st,
|  | bool | show_msg
| ) |  |

Update the acceptance for a station.

Parameters

  st | Station to update
  show_msg | controls whether to display a message that acceptance was changed.

Definition at line 611 of file station_cmd.cpp.

References _local_company, GoodsEntry::Acceptance, Station::always_accepted, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Any(), BaseStation::facilities, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_link_graph_pool >::Get(), GetAcceptanceAroundStation(), GetAcceptanceMask(), Station::goods, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, IsCargoInClass(), BaseStation::IsInUse(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_link_graph_pool >::IsValidID(), GoodsEntry::link_graph, GoodsEntry::node, NUM_CARGO, BaseStation::owner, Passengers, BaseStation::rect, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set(), SetWindowWidgetDirty(), ShowRejectOrAcceptNews(), GoodsEntry::status, WC_STATION_VIEW, and WID_SV_ACCEPT_RATING_LIST.

Referenced by AfterLoadGame(), Station::AfterStationTileSetChange(), and StationHandleBigTick().

## ◆ UpdateStationDockingTiles()

void UpdateStationDockingTiles | ( | Station * | st | ) |

Definition at line 4684 of file station_cmd.cpp.

## ◆ UpdateStationRating()

static void UpdateStationRating | ( | Station * | st | ) |
| static

Periodic update of a station's rating.

Parameters

  st | The station to update.

Definition at line 3973 of file station_cmd.cpp.

References _cheats, _settings_game, GoodsEntry::AvailableCount(), CALLBACK_FAILED, GoodsEntry::GoodsEntryData::cargo, CBID_CARGO_STATION_RATING_CALC, Clamp(), GB(), GoodsEntry::GetData(), Station::goods, HasBit(), GoodsEntry::HasData(), GoodsEntry::HasRating(), GoodsEntry::HasVehicleEverTriedLoading(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_company_pool >::IsValidID(), CargoSpec::Iterate(), GoodsEntry::last_age, GoodsEntry::last_speed, MultiMap< Tkey, Tvalue, Tcompare >::MapSize(), GoodsEntry::max_waiting_cargo, GameSettings::order, BaseStation::owner, CargoList< Tinst, Tcont >::Packets(), Random, GoodsEntry::Rating, GoodsEntry::rating, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), OrderSettings::selectgoods, SetWindowDirty(), SetWindowWidgetDirty(), Cheats::station_rating, StationRatingCalc, Town::statues, GoodsEntry::status, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), GoodsEntry::time_since_pickup, BaseStation::town, TruncateCargo(), Cheat::value, VEH_INVALID, VEH_SHIP, WC_STATION_VIEW, and WID_SV_ACCEPT_RATING_LIST.

## ◆ UpdateStationSignCoord()

static void UpdateStationSignCoord | ( | BaseStation * | st | ) |
| static

Definition at line 659 of file station_cmd.cpp.

## ◆ UpdateStationWaiting()

static uint UpdateStationWaiting | ( | Station * | st,
|  | CargoType | cargo,
|  | uint | amount,
|  | Source | source
| ) |  |
| static

Definition at line 4401 of file station_cmd.cpp.

## ◆ VehicleEnter_Station()

static VehicleEnterTileStates VehicleEnter_Station | ( | Vehicle * | v,
|  | TileIndex | tile,
|  | int | x,
|  | int | y
| ) |  |
| static

Definition at line 3839 of file station_cmd.cpp.

## Variable Documentation

## ◆ _dock_h_chk

const uint8_t _dock_h_chk[4] = { 1, 2, 1, 2 }
| static

Definition at line 2882 of file station_cmd.cpp.

## ◆ _dock_tileoffs_chkaround

const TileIndexDiffC _dock_tileoffs_chkaround[]
| static

Initial value:
= {
{-1, 0},
{ 0, 0},
{ 0, 0},
{ 0, -1}
}

Definition at line 2875 of file station_cmd.cpp.

## ◆ _dock_w_chk

const uint8_t _dock_w_chk[4] = { 2, 1, 2, 1 }
| static

Definition at line 2881 of file station_cmd.cpp.

## ◆ _tile_type_station_procs

const TileTypeProcs _tile_type_station_procs
| extern

Initial value:
= {
DrawTile_Station,
GetSlopePixelZ_Station,
ClearTile_Station,
nullptr,
GetTileDesc_Station,
GetTileTrackStatus_Station,
ClickTile_Station,
AnimateTile_Station,
TileLoop_Station,
ChangeTileOwner_Station,
nullptr,
VehicleEnter_Station,
GetFoundation_Station,
TerraformTile_Station,
CheckBuildAbove_Station,
}
ClearTile_Station
CommandCost ClearTile_Station(TileIndex tile, DoCommandFlags flags)
Clear a single tile of a station.
Definition station_cmd.cpp:4904

Definition at line 57 of file landscape.cpp.