# AIStation Class Reference

Class that handles all station related functions. More...

`#include <ai_station.hpp>`

Inheritance diagram for AIStation:

## Public Types
enum | ErrorMessages { ERR_STATION_BASE = AIError::ERR_CAT_STATION << AIError::ERR_CAT_BIT_SIZE, ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION, ERR_STATION_TOO_MANY_STATIONS, ERR_STATION_TOO_MANY_STATIONS_IN_TOWN }
| All station related error messages. More...
enum | StationType { STATION_TRAIN = 0x01, STATION_TRUCK_STOP = 0x02, STATION_BUS_STOP = 0x04, STATION_AIRPORT = 0x08, STATION_DOCK = 0x10, STATION_ANY = 0x1F }
| Type of stations known in the game. More...
## Static Public Member Functions
static const char * | GetClassName ()
static bool | IsValidStation (StationID station_id)
| Checks whether the given station is valid and owned by you.
static StationID | GetStationID (TileIndex tile)
| Get the StationID of a tile, if there is a station.
static int32 | GetCargoWaiting (StationID station_id, CargoID cargo_id)
| See how much cargo there is waiting on a station.
static int32 | GetCargoRating (StationID station_id, CargoID cargo_id)
| See how high the rating is of a cargo on a station.
static int32 | GetCoverageRadius (AIStation::StationType station_type)
| Get the coverage radius of this type of station.
static int32 | GetDistanceManhattanToTile (StationID station_id, TileIndex tile)
| Get the manhattan distance from the tile to the AIStation::GetLocation() of the station.
static int32 | GetDistanceSquareToTile (StationID station_id, TileIndex tile)
| Get the square distance from the tile to the AIStation::GetLocation() of the station.
static bool | IsWithinTownInfluence (StationID station_id, TownID town_id)
| Find out if this station is within the rating influence of a town.
static bool | HasStationType (StationID station_id, StationType station_type)
| Check if any part of the station contains a station of the type StationType.
static bool | HasRoadType (StationID station_id, AIRoad::RoadType road_type)
| Check if any part of the station contains a station of the type RoadType.
static TownID | GetNearestTown (StationID station_id)
| Get the town that was nearest to the given station when the station was built.

## Detailed Description

Class that handles all station related functions.

Definition at line 23 of file ai_station.hpp.

## Member Enumeration Documentation

enum AIStation::ErrorMessages

All station related error messages.

Enumerator:

  ERR_STATION_BASE | Base for station related errors.
  ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION | The station is build too close to another station, airport or dock.
  ERR_STATION_TOO_MANY_STATIONS | There are too many stations, airports and docks in the game.
  ERR_STATION_TOO_MANY_STATIONS_IN_TOWN | There are too many stations, airports of docks in a town.

Definition at line 30 of file ai_station.hpp.

enum AIStation::StationType

Type of stations known in the game.

Enumerator:

  STATION_TRAIN | Train station.
  STATION_TRUCK_STOP | Truck station.
  STATION_BUS_STOP | Bus station.
  STATION_AIRPORT | Airport.
  STATION_DOCK | Dock.
  STATION_ANY | All station types.

Definition at line 47 of file ai_station.hpp.

## Member Function Documentation

bool AIStation::IsValidStation | ( | StationID | station_id | ) | `[static]`

Checks whether the given station is valid and owned by you.

Parameters:

  | station_id | The station to check.

Returns:
  True if and only if the station is valid.

Definition at line 22 of file ai_station.cpp.

References SpecializedStation< Station, false >::GetIfValid(), BaseStation::owner, and OWNER_NONE.

Referenced by AIRoad::_BuildRoadStationInternal(), AITileList_StationType::AITileList_StationType(), AIAirport::BuildAirport(), AIMarine::BuildDock(), AIRail::BuildNewGRFRailStation(), AIRail::BuildRailStation(), GetCargoRating(), GetCargoWaiting(), GetDistanceManhattanToTile(), GetDistanceSquareToTile(), GetNearestTown(), HasRoadType(), HasStationType(), and IsWithinTownInfluence().

StationID AIStation::GetStationID | ( | TileIndex | tile | ) | `[static]`

Get the StationID of a tile, if there is a station.

Parameters:

  | tile | The tile to find the stationID of

Returns:
  StationID of the station.

Postcondition:
  Use IsValidStation() to see if the station is valid.

Definition at line 28 of file ai_station.cpp.

References GetStationIndex(), IsTileType(), IsValidTile(), and MP_STATION.

int32 AIStation::GetCargoWaiting | ( | StationID | station_id,
|  | CargoID | cargo_id |
| ) |  |  | `[static]`

See how much cargo there is waiting on a station.

Parameters:

  | station_id | The station to get the cargo-waiting of.
  | cargo_id | The cargo to get the cargo-waiting of.

Precondition:
  IsValidStation(station_id).

  IsValidCargo(cargo_id).

Returns:
  The amount of units waiting at the station.

Definition at line 34 of file ai_station.cpp.

References AICargo::IsValidCargo(), and IsValidStation().

int32 AIStation::GetCargoRating | ( | StationID | station_id,
|  | CargoID | cargo_id |
| ) |  |  | `[static]`

See how high the rating is of a cargo on a station.

Parameters:

  | station_id | The station to get the cargo-rating of.
  | cargo_id | The cargo to get the cargo-rating of.

Precondition:
  IsValidStation(station_id).

  IsValidCargo(cargo_id).

Returns:
  The rating in percent of the cargo on the station.

Definition at line 42 of file ai_station.cpp.

References SpecializedStation< Station, false >::Get(), AICargo::IsValidCargo(), IsValidStation(), and ToPercent8().

int32 AIStation::GetCoverageRadius | ( | AIStation::StationType | station_type | ) | `[static]`

Get the coverage radius of this type of station.

Parameters:

  | station_type | The type of station.

Returns:
  The radius in tiles.

Definition at line 50 of file ai_station.cpp.

References _settings_game, CA_BUS, CA_DOCK, CA_NONE, CA_TRAIN, CA_TRUCK, CA_UNMODIFIED, CountBits(), StationSettings::modified_catchment, GameSettings::station, STATION_AIRPORT, STATION_BUS_STOP, STATION_DOCK, STATION_TRAIN, and STATION_TRUCK_STOP.

int32 AIStation::GetDistanceManhattanToTile | ( | StationID | station_id,
|  | TileIndex | tile |
| ) |  |  | `[static]`

Get the manhattan distance from the tile to the AIStation::GetLocation() of the station.

Parameters:

  | station_id | The station to get the distance to.
  | tile | The tile to get the distance to.

Precondition:
  IsValidStation(station_id).

Returns:
  The distance between station and tile.

Definition at line 68 of file ai_station.cpp.

References AIMap::DistanceManhattan(), AIBaseStation::GetLocation(), and IsValidStation().

int32 AIStation::GetDistanceSquareToTile | ( | StationID | station_id,
|  | TileIndex | tile |
| ) |  |  | `[static]`

Get the square distance from the tile to the AIStation::GetLocation() of the station.

Parameters:

  | station_id | The station to get the distance to.
  | tile | The tile to get the distance to.

Precondition:
  IsValidStation(station_id).

Returns:
  The distance between station and tile.

Definition at line 75 of file ai_station.cpp.

References AIMap::DistanceSquare(), AIBaseStation::GetLocation(), and IsValidStation().

bool AIStation::IsWithinTownInfluence | ( | StationID | station_id,
|  | TownID | town_id |
| ) |  |  | `[static]`

Find out if this station is within the rating influence of a town.

Stations within the radius influence the rating of the town.

Parameters:

  | station_id | The station to check.
  | town_id | The town to check.

Returns:
  True if the tile is within the rating influence of the town.

Definition at line 82 of file ai_station.cpp.

References AIBaseStation::GetLocation(), IsValidStation(), and AITown::IsWithinTownInfluence().

bool AIStation::HasStationType | ( | StationID | station_id,
|  | StationType | station_type |
| ) |  |  | `[static]`

Check if any part of the station contains a station of the type StationType.

Parameters:

  | station_id | The station to look at.
  | station_type | The StationType to look for.

Returns:
  True if the station has a station part of the type StationType.

Definition at line 89 of file ai_station.cpp.

References CountBits(), SpecializedStation< Station, false >::Get(), and IsValidStation().

Referenced by AIAirport::GetAirportType().

bool AIStation::HasRoadType | ( | StationID | station_id,
|  | AIRoad::RoadType | road_type |
| ) |  |  | `[static]`

Check if any part of the station contains a station of the type RoadType.

Parameters:

  | station_id | The station to look at.
  | road_type | The RoadType to look for.

Returns:
  True if the station has a station part of the type RoadType.

Definition at line 97 of file ai_station.cpp.

References SpecializedStation< Station, false >::Get(), AIRoad::IsRoadTypeAvailable(), IsValidStation(), ROADSTOP_BUS, ROADSTOP_TRUCK, and RoadTypeToRoadTypes().

TownID AIStation::GetNearestTown | ( | StationID | station_id | ) | `[static]`

Get the town that was nearest to the given station when the station was built.

Parameters:

  | station_id | The station to look at.

Returns:
  The TownID of the town whose center tile was closest to the station at the time the station was built.

Note:
  There is no guarantee that the station is even near the returned town nor that the returns town is closest to the station now. A station that was 'walked' to the other end of the map will still return the same town. Also, towns grow, towns change. So don't depend on this value too much.

Definition at line 114 of file ai_station.cpp.

References IsValidStation().

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

- src/ai/api/ai_station.hpp
- src/ai/api/ai_station.cpp