OpenTTD AI API  20241120-master-g6d3adc6169
Public Types | Static Public Member Functions
AIRoad Class Reference

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

Inheritance diagram for AIRoad:

Public Types

enum  ErrorMessages {
  ERR_ROAD_BASE ,
  ERR_ROAD_WORKS_IN_PROGRESS ,
  ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION ,
  ERR_ROAD_CANNOT_BUILD_ON_TOWN_ROAD ,
  ERR_ROAD_ONE_WAY_ROADS_CANNOT_HAVE_JUNCTIONS ,
  ERR_ROADTYPE_DISALLOWS_CROSSING ,
  ERR_UNSUITABLE_ROAD
}
 All road related error messages. More...
 
enum  RoadType {
  ROADTYPE_ROAD ,
  ROADTYPE_TRAM ,
  ROADTYPE_INVALID
}
 Types of road known to the game. More...
 
enum  RoadTramTypes : int {
  ROADTRAMTYPES_ROAD ,
  ROADTRAMTYPES_TRAM
}
 Road/tram types. More...
 
enum  RoadVehicleType {
  ROADVEHTYPE_BUS ,
  ROADVEHTYPE_TRUCK
}
 Type of road station. More...
 
enum  BuildType {
  BT_ROAD ,
  BT_DEPOT ,
  BT_BUS_STOP ,
  BT_TRUCK_STOP
}
 Types of road-related objects in the game. More...
 

Static Public Member Functions

static string GetName (RoadType road_type)
 Get the name of a road type. More...
 
static RoadVehicleType GetRoadVehicleTypeForCargo (CargoID cargo_type)
 Determines whether a busstop or a truckstop is needed to transport a certain cargo. More...
 
static bool IsRoadTile (TileIndex tile)
 Checks whether the given tile is actually a tile with road that can be used to traverse a tile. More...
 
static bool IsRoadDepotTile (TileIndex tile)
 Checks whether the given tile is actually a tile with a road depot. More...
 
static bool IsRoadStationTile (TileIndex tile)
 Checks whether the given tile is actually a tile with a road station. More...
 
static bool IsDriveThroughRoadStationTile (TileIndex tile)
 Checks whether the given tile is actually a tile with a drive through road station. More...
 
static bool IsRoadTypeAvailable (RoadType road_type)
 Check if a given RoadType is available. More...
 
static RoadType GetCurrentRoadType ()
 Get the current RoadType set for all AIRoad functions. More...
 
static void SetCurrentRoadType (RoadType road_type)
 Set the RoadType for all further AIRoad functions. More...
 
static bool RoadVehCanRunOnRoad (AIRoad::RoadType engine_road_type, AIRoad::RoadType road_road_type)
 Check if a road vehicle built for a road type can run on another road type. More...
 
static bool RoadVehHasPowerOnRoad (AIRoad::RoadType engine_road_type, AIRoad::RoadType road_road_type)
 Check if a road vehicle built for a road type has power on another road type. More...
 
static bool ConvertRoadType (TileIndex start_tile, TileIndex end_tile, RoadType road_type)
 Convert the road on all tiles within a rectangle to another RoadType. More...
 
static bool HasRoadType (TileIndex tile, RoadType road_type)
 Check if a given tile has RoadType. More...
 
static bool AreRoadTilesConnected (TileIndex tile_from, TileIndex tile_to)
 Checks whether the given tiles are directly connected, i.e. More...
 
static int CanBuildConnectedRoadParts (AITile::Slope slope, Array< TileIndex > &&existing, TileIndex start, TileIndex end)
 Lookup function for building road parts independent of whether the "building on slopes" setting is enabled or not. More...
 
static int CanBuildConnectedRoadPartsHere (TileIndex tile, TileIndex start, TileIndex end)
 Lookup function for building road parts independent of whether the "building on slopes" setting is enabled or not. More...
 
static int GetNeighbourRoadCount (TileIndex tile)
 Count how many neighbours are road. More...
 
static TileIndex GetRoadDepotFrontTile (TileIndex depot)
 Gets the tile in front of a road depot. More...
 
static TileIndex GetRoadStationFrontTile (TileIndex station)
 Gets the tile in front of a road station. More...
 
static TileIndex GetDriveThroughBackTile (TileIndex station)
 Gets the tile at the back of a drive through road station. More...
 
static bool BuildRoad (TileIndex start, TileIndex end)
 Builds a road from the center of tile start to the center of tile end. More...
 
static bool BuildOneWayRoad (TileIndex start, TileIndex end)
 Builds a one-way road from the center of tile start to the center of tile end. More...
 
static bool BuildRoadFull (TileIndex start, TileIndex end)
 Builds a road from the edge of tile start to the edge of tile end (both included). More...
 
static bool BuildOneWayRoadFull (TileIndex start, TileIndex end)
 Builds a one-way road from the edge of tile start to the edge of tile end (both included). More...
 
static bool BuildRoadDepot (TileIndex tile, TileIndex front)
 Builds a road depot. More...
 
static bool BuildRoadStation (TileIndex tile, TileIndex front, RoadVehicleType road_veh_type, StationID station_id)
 Builds a road bus or truck station. More...
 
static bool BuildDriveThroughRoadStation (TileIndex tile, TileIndex front, RoadVehicleType road_veh_type, StationID station_id)
 Builds a drive-through road bus or truck station. More...
 
static bool RemoveRoad (TileIndex start, TileIndex end)
 Removes a road from the center of tile start to the center of tile end. More...
 
static bool RemoveRoadFull (TileIndex start, TileIndex end)
 Removes a road from the edge of tile start to the edge of tile end (both included). More...
 
static bool RemoveRoadDepot (TileIndex tile)
 Removes a road depot. More...
 
static bool RemoveRoadStation (TileIndex tile)
 Removes a road bus or truck station. More...
 
static Money GetBuildCost (RoadType roadtype, BuildType build_type)
 Get the baseprice of building a road-related object. More...
 
static RoadTramTypes GetRoadTramType (RoadType roadtype)
 Test if a road type is for road or trams. More...
 
static int GetMaxSpeed (RoadType road_type)
 Get the maximum speed of road vehicles running on this roadtype. More...
 
static int GetMaintenanceCostFactor (RoadType roadtype)
 Get the maintenance cost factor of a road type. More...
 

Detailed Description

Class that handles all road related functions.

Member Enumeration Documentation

◆ BuildType

Types of road-related objects in the game.

Enumerator
BT_ROAD 

Build a piece of road.

BT_DEPOT 

Build a road depot.

BT_BUS_STOP 

Build a bus stop.

BT_TRUCK_STOP 

Build a truck stop.

◆ ErrorMessages

All road related error messages.

See also
ScriptErrorType
Enumerator
ERR_ROAD_BASE 

Base for road building / maintaining errors.

ERR_ROAD_WORKS_IN_PROGRESS 

Road works are in progress.

ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION 

Drive through is in the wrong direction.

ERR_ROAD_CANNOT_BUILD_ON_TOWN_ROAD 

Drive through roads can't be build on town owned roads.

ERR_ROAD_ONE_WAY_ROADS_CANNOT_HAVE_JUNCTIONS 

One way roads can't have junctions.

ERR_ROADTYPE_DISALLOWS_CROSSING 

This roadtype cannot have crossings.

ERR_UNSUITABLE_ROAD 

No suitable road could be found.

◆ RoadTramTypes

Road/tram types.

Enumerator
ROADTRAMTYPES_ROAD 

Road road types.

ROADTRAMTYPES_TRAM 

Tram road types.

◆ RoadType

Types of road known to the game.

Enumerator
ROADTYPE_ROAD 

Build road objects.

ROADTYPE_TRAM 

Build tram objects.

ROADTYPE_INVALID 

Invalid RoadType.

◆ RoadVehicleType

Type of road station.

Enumerator
ROADVEHTYPE_BUS 

Build objects useable for busses and passenger trams.

ROADVEHTYPE_TRUCK 

Build objects useable for trucks and cargo trams.

Member Function Documentation

◆ AreRoadTilesConnected()

static bool AIRoad::AreRoadTilesConnected ( TileIndex  tile_from,
TileIndex  tile_to 
)
static

Checks whether the given tiles are directly connected, i.e.

whether a road vehicle can travel from the center of the first tile to the center of the second tile.

Parameters
tile_fromThe source tile.
tile_toThe destination tile.
Precondition
IsRoadTypeAvailable(GetCurrentRoadType()).
AIMap::IsValidTile(tile_from).
AIMap::IsValidTile(tile_to).
'tile_from' and 'tile_to' are directly neighbouring tiles.
Returns
True if and only if a road vehicle can go from tile_from to tile_to.

◆ BuildDriveThroughRoadStation()

static bool AIRoad::BuildDriveThroughRoadStation ( TileIndex  tile,
TileIndex  front,
RoadVehicleType  road_veh_type,
StationID  station_id 
)
static

Builds a drive-through road bus or truck station.

Parameters
tilePlace to build the station.
frontA tile on the same axis with 'tile' as the station shall be oriented.
road_veh_typeWhether to build a truck or bus station.
station_idThe station to join, AIStation::STATION_NEW or AIStation::STATION_JOIN_ADJACENT.
Precondition
AIMap::IsValidTile(tile).
AIMap::IsValidTile(front).
'tile' is not equal to 'front', but in a straight line of it.
station_id == AIStation::STATION_NEW || station_id == AIStation::STATION_JOIN_ADJACENT || AIStation::IsValidStation(station_id).
IsRoadTypeAvailable(GetCurrentRoadType()).
Exceptions
AIError::ERR_OWNED_BY_ANOTHER_COMPANY
AIError::ERR_AREA_NOT_CLEAR
AIError::ERR_FLAT_LAND_REQUIRED
AIRoad::ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION
AIRoad::ERR_ROAD_CANNOT_BUILD_ON_TOWN_ROAD
AIError::ERR_VEHICLE_IN_THE_WAY
AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION
AIStation::ERR_STATION_TOO_MANY_STATIONS
AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN
Returns
Whether the station has been/can be build or not.

◆ BuildOneWayRoad()

static bool AIRoad::BuildOneWayRoad ( TileIndex  start,
TileIndex  end 
)
static

Builds a one-way road from the center of tile start to the center of tile end.

If the road already exists, it is made one-way road. If the road already exists and is already one-way in this direction, the road is made two-way again. If the road already exists but is one-way in the other direction, it's made a 'no'-way road (it's forbidden to enter the tile from any direction).

Parameters
startThe start tile of the road.
endThe end tile of the road.
Precondition
'start' is not equal to 'end'.
AIMap::IsValidTile(start).
AIMap::IsValidTile(end).
'start' and 'end' are in a straight line, i.e. AIMap::GetTileX(start) == AIMap::GetTileX(end) or AIMap::GetTileY(start) == AIMap::GetTileY(end).
GetCurrentRoadType() == ROADTYPE_ROAD.
Exceptions
AIError::ERR_ALREADY_BUILT
AIError::ERR_LAND_SLOPED_WRONG
AIError::ERR_AREA_NOT_CLEAR
AIRoad::ERR_ROAD_ONE_WAY_ROADS_CANNOT_HAVE_JUNCTIONS
AIRoad::ERR_ROAD_WORKS_IN_PROGRESS
AIError::ERR_VEHICLE_IN_THE_WAY
Note
Construction will fail if an obstacle is found between the start and end tiles.
Returns
Whether the road has been/can be build or not.

◆ BuildOneWayRoadFull()

static bool AIRoad::BuildOneWayRoadFull ( TileIndex  start,
TileIndex  end 
)
static

Builds a one-way road from the edge of tile start to the edge of tile end (both included).

If the road already exists, it is made one-way road. If the road already exists and is already one-way in this direction, the road is made two-way again. If the road already exists but is one-way in the other direction, it's made a 'no'-way road (it's forbidden to enter the tile from any direction).

Parameters
startThe start tile of the road.
endThe end tile of the road.
Precondition
'start' is not equal to 'end'.
AIMap::IsValidTile(start).
AIMap::IsValidTile(end).
'start' and 'end' are in a straight line, i.e. AIMap::GetTileX(start) == AIMap::GetTileX(end) or AIMap::GetTileY(start) == AIMap::GetTileY(end).
GetCurrentRoadType() == ROADTYPE_ROAD.
Exceptions
AIError::ERR_ALREADY_BUILT
AIError::ERR_LAND_SLOPED_WRONG
AIError::ERR_AREA_NOT_CLEAR
AIRoad::ERR_ROAD_ONE_WAY_ROADS_CANNOT_HAVE_JUNCTIONS
AIRoad::ERR_ROAD_WORKS_IN_PROGRESS
AIError::ERR_VEHICLE_IN_THE_WAY
Note
Construction will fail if an obstacle is found between the start and end tiles.
Returns
Whether the road has been/can be build or not.

◆ BuildRoad()

static bool AIRoad::BuildRoad ( TileIndex  start,
TileIndex  end 
)
static

Builds a road from the center of tile start to the center of tile end.

Parameters
startThe start tile of the road.
endThe end tile of the road.
Precondition
'start' is not equal to 'end'.
AIMap::IsValidTile(start).
AIMap::IsValidTile(end).
'start' and 'end' are in a straight line, i.e. AIMap::GetTileX(start) == AIMap::GetTileX(end) or AIMap::GetTileY(start) == AIMap::GetTileY(end).
IsRoadTypeAvailable(GetCurrentRoadType()).
Exceptions
AIError::ERR_ALREADY_BUILT
AIError::ERR_LAND_SLOPED_WRONG
AIError::ERR_AREA_NOT_CLEAR
AIRoad::ERR_ROAD_ONE_WAY_ROADS_CANNOT_HAVE_JUNCTIONS
AIRoad::ERR_ROAD_WORKS_IN_PROGRESS
AIError::ERR_VEHICLE_IN_THE_WAY
Note
Construction will fail if an obstacle is found between the start and end tiles.
Returns
Whether the road has been/can be build or not.

◆ BuildRoadDepot()

static bool AIRoad::BuildRoadDepot ( TileIndex  tile,
TileIndex  front 
)
static

Builds a road depot.

Parameters
tilePlace to build the depot.
frontThe tile exactly in front of the depot.
Precondition
AIMap::IsValidTile(tile).
AIMap::IsValidTile(front).
'tile' is not equal to 'front', but in a straight line of it.
IsRoadTypeAvailable(GetCurrentRoadType()).
Exceptions
AIError::ERR_FLAT_LAND_REQUIRED
AIError::ERR_AREA_NOT_CLEAR
Returns
Whether the road depot has been/can be build or not.

◆ BuildRoadFull()

static bool AIRoad::BuildRoadFull ( TileIndex  start,
TileIndex  end 
)
static

Builds a road from the edge of tile start to the edge of tile end (both included).

Parameters
startThe start tile of the road.
endThe end tile of the road.
Precondition
'start' is not equal to 'end'.
AIMap::IsValidTile(start).
AIMap::IsValidTile(end).
'start' and 'end' are in a straight line, i.e. AIMap::GetTileX(start) == AIMap::GetTileX(end) or AIMap::GetTileY(start) == AIMap::GetTileY(end).
IsRoadTypeAvailable(GetCurrentRoadType()).
Exceptions
AIError::ERR_ALREADY_BUILT
AIError::ERR_LAND_SLOPED_WRONG
AIError::ERR_AREA_NOT_CLEAR
AIRoad::ERR_ROAD_ONE_WAY_ROADS_CANNOT_HAVE_JUNCTIONS
AIRoad::ERR_ROAD_WORKS_IN_PROGRESS
AIError::ERR_VEHICLE_IN_THE_WAY
Note
Construction will fail if an obstacle is found between the start and end tiles.
Returns
Whether the road has been/can be build or not.

◆ BuildRoadStation()

static bool AIRoad::BuildRoadStation ( TileIndex  tile,
TileIndex  front,
RoadVehicleType  road_veh_type,
StationID  station_id 
)
static

Builds a road bus or truck station.

Parameters
tilePlace to build the station.
frontThe tile exactly in front of the station.
road_veh_typeWhether to build a truck or bus station.
station_idThe station to join, AIStation::STATION_NEW or AIStation::STATION_JOIN_ADJACENT.
Precondition
AIMap::IsValidTile(tile).
AIMap::IsValidTile(front).
'tile' is not equal to 'front', but in a straight line of it.
station_id == AIStation::STATION_NEW || station_id == AIStation::STATION_JOIN_ADJACENT || AIStation::IsValidStation(station_id).
GetCurrentRoadType() == ROADTYPE_ROAD.
Exceptions
AIError::ERR_OWNED_BY_ANOTHER_COMPANY
AIError::ERR_AREA_NOT_CLEAR
AIError::ERR_FLAT_LAND_REQUIRED
AIRoad::ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION
AIRoad::ERR_ROAD_CANNOT_BUILD_ON_TOWN_ROAD
AIError::ERR_VEHICLE_IN_THE_WAY
AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION
AIStation::ERR_STATION_TOO_MANY_STATIONS
AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN
Returns
Whether the station has been/can be build or not.

◆ CanBuildConnectedRoadParts()

static int AIRoad::CanBuildConnectedRoadParts ( AITile::Slope  slope,
Array< TileIndex > &&  existing,
TileIndex  start,
TileIndex  end 
)
static

Lookup function for building road parts independent of whether the "building on slopes" setting is enabled or not.

This implementation can be used for abstract reasoning about a tile as it needs the slope and existing road parts of the tile as information.

Parameters
slopeThe slope of the tile to examine.
existingAn array with the existing neighbours in the same format as "start" and "end", e.g. AIMap.GetTileIndex(0, 1). As a result of this all values of the existing array must be of type integer.
startThe tile from where the 'tile to be considered' will be entered. This is a relative tile, so valid parameters are: AIMap.GetTileIndex(0, 1), AIMap.GetTileIndex(0, -1), AIMap.GetTileIndex(1, 0) and AIMap.GetTileIndex(-1, 0).
endThe tile from where the 'tile to be considered' will be exited. This is a relative tile, sovalid parameters are: AIMap.GetTileIndex(0, 1), AIMap.GetTileIndex(0, -1), AIMap.GetTileIndex(1, 0) and AIMap.GetTileIndex(-1, 0).
Precondition
start != end.
slope must be a valid slope, i.e. one specified in AITile::Slope.
Note
Passing data that would be invalid in-game, e.g. existing containing road parts that can not be build on a tile with the given slope, does not necessarily means that -1 is returned, i.e. not all preconditions written here or assumed by the game are extensively checked to make sure the data entered is valid.
Returns
0 when the build parts do not connect, 1 when they do connect once they are build or 2 when building the first part automatically builds the second part. -1 means the preconditions are not met.

◆ CanBuildConnectedRoadPartsHere()

static int AIRoad::CanBuildConnectedRoadPartsHere ( TileIndex  tile,
TileIndex  start,
TileIndex  end 
)
static

Lookup function for building road parts independent of whether the "building on slopes" setting is enabled or not.

This implementation can be used for reasoning about an existing tile.

Parameters
tileThe tile to examine.
startThe tile from where "tile" will be entered.
endThe tile from where "tile" will be exited.
Precondition
start != end.
tile != start.
tile != end.
AIMap.IsValidTile(tile).
AIMap.IsValidTile(start).
AIMap.IsValidTile(end).
AIMap.GetDistanceManhattanToTile(tile, start) == 1.
AIMap.GetDistanceManhattanToTile(tile, end) == 1.
Returns
0 when the build parts do not connect, 1 when they do connect once they are build or 2 when building the first part automatically builds the second part. -1 means the preconditions are not met.

◆ ConvertRoadType()

static bool AIRoad::ConvertRoadType ( TileIndex  start_tile,
TileIndex  end_tile,
RoadType  road_type 
)
static

Convert the road on all tiles within a rectangle to another RoadType.

Parameters
start_tileOne corner of the rectangle.
end_tileThe opposite corner of the rectangle.
road_typeThe RoadType you want to convert.
Precondition
AIMap::IsValidTile(start_tile).
AIMap::IsValidTile(end_tile).
IsRoadTypeAvailable(road_type).
Exceptions
AIRoad::ERR_UNSUITABLE_ROAD
Returns
Whether at least some road has been converted successfully.

◆ GetBuildCost()

static Money AIRoad::GetBuildCost ( RoadType  roadtype,
BuildType  build_type 
)
static

Get the baseprice of building a road-related object.

Parameters
roadtypethe roadtype of the object to build
build_typethe type of object to build
Precondition
IsRoadTypeAvailable(roadtype)
Returns
The baseprice of building the given object.

◆ GetCurrentRoadType()

static RoadType AIRoad::GetCurrentRoadType ( )
static

Get the current RoadType set for all AIRoad functions.

Returns
The RoadType currently set.

◆ GetDriveThroughBackTile()

static TileIndex AIRoad::GetDriveThroughBackTile ( TileIndex  station)
static

Gets the tile at the back of a drive through road station.

So, one side of the drive through station is retrieved with GetTileInFrontOfStation, the other with this function.

Parameters
stationThe road station tile.
Precondition
IsDriveThroughRoadStationTile(station).
Returns
The tile at the back of the drive through road station.

◆ GetMaintenanceCostFactor()

static int AIRoad::GetMaintenanceCostFactor ( RoadType  roadtype)
static

Get the maintenance cost factor of a road type.

Parameters
roadtypeThe road type to get the maintenance factor of.
Precondition
IsRoadTypeAvailable(roadtype)
Returns
Maintenance cost factor of the roadtype.

◆ GetMaxSpeed()

static int AIRoad::GetMaxSpeed ( RoadType  road_type)
static

Get the maximum speed of road vehicles running on this roadtype.

Parameters
road_typeThe roadtype to get the maximum speed of.
Precondition
IsRoadTypeAvailable(road_type)
Returns
The maximum speed road vehicles can run on this roadtype or 0 if there is no limit.
Note
The speed is in OpenTTD's internal speed unit. This is mph / 0.8, which is roughly 0.5 km/h. To get km/h multiply this number by 2.01168.

◆ GetName()

static string AIRoad::GetName ( RoadType  road_type)
static

Get the name of a road type.

Parameters
road_typeThe road type to get the name of.
Precondition
IsRoadTypeAvailable(road_type).
Returns
The name the road type has.

◆ GetNeighbourRoadCount()

static int AIRoad::GetNeighbourRoadCount ( TileIndex  tile)
static

Count how many neighbours are road.

Parameters
tileThe tile to check on.
Precondition
AIMap::IsValidTile(tile).
IsRoadTypeAvailable(GetCurrentRoadType()).
Returns
0 means no neighbour road; max value is 4.

◆ GetRoadDepotFrontTile()

static TileIndex AIRoad::GetRoadDepotFrontTile ( TileIndex  depot)
static

Gets the tile in front of a road depot.

Parameters
depotThe road depot tile.
Precondition
IsRoadDepotTile(depot).
Returns
The tile in front of the depot.

◆ GetRoadStationFrontTile()

static TileIndex AIRoad::GetRoadStationFrontTile ( TileIndex  station)
static

Gets the tile in front of a road station.

Parameters
stationThe road station tile.
Precondition
IsRoadStationTile(station).
Returns
The tile in front of the road station.

◆ GetRoadTramType()

static RoadTramTypes AIRoad::GetRoadTramType ( RoadType  roadtype)
static

Test if a road type is for road or trams.

Parameters
roadtypethe roadtype to test.
Returns
RoadTramTypes of the road types.

◆ GetRoadVehicleTypeForCargo()

static RoadVehicleType AIRoad::GetRoadVehicleTypeForCargo ( CargoID  cargo_type)
static

Determines whether a busstop or a truckstop is needed to transport a certain cargo.

Parameters
cargo_typeThe cargo to test.
Precondition
AICargo::IsValidCargo(cargo_type).
Returns
The road vehicle type needed to transport the cargo.

◆ HasRoadType()

static bool AIRoad::HasRoadType ( TileIndex  tile,
RoadType  road_type 
)
static

Check if a given tile has RoadType.

Parameters
tileThe tile to check.
road_typeThe RoadType to check for.
Precondition
AIMap::IsValidTile(tile).
IsRoadTypeAvailable(road_type).
Returns
True if the tile contains a RoadType object.

◆ IsDriveThroughRoadStationTile()

static bool AIRoad::IsDriveThroughRoadStationTile ( TileIndex  tile)
static

Checks whether the given tile is actually a tile with a drive through road station.

Parameters
tileThe tile to check.
Precondition
AIMap::IsValidTile(tile).
IsRoadTypeAvailable(GetCurrentRoadType()).
Returns
True if and only if the tile has a drive through road station.

◆ IsRoadDepotTile()

static bool AIRoad::IsRoadDepotTile ( TileIndex  tile)
static

Checks whether the given tile is actually a tile with a road depot.

Parameters
tileThe tile to check.
Precondition
AIMap::IsValidTile(tile).
IsRoadTypeAvailable(GetCurrentRoadType()).
Returns
True if and only if the tile has a road depot.

◆ IsRoadStationTile()

static bool AIRoad::IsRoadStationTile ( TileIndex  tile)
static

Checks whether the given tile is actually a tile with a road station.

Parameters
tileThe tile to check.
Precondition
AIMap::IsValidTile(tile).
IsRoadTypeAvailable(GetCurrentRoadType()).
Returns
True if and only if the tile has a road station.

◆ IsRoadTile()

static bool AIRoad::IsRoadTile ( TileIndex  tile)
static

Checks whether the given tile is actually a tile with road that can be used to traverse a tile.

This excludes road depots and 'normal' road stations, but includes drive through stations.

Parameters
tileThe tile to check.
Precondition
AIMap::IsValidTile(tile).
Returns
True if and only if the tile has road.

◆ IsRoadTypeAvailable()

static bool AIRoad::IsRoadTypeAvailable ( RoadType  road_type)
static

Check if a given RoadType is available.

Parameters
road_typeThe RoadType to check for.
Returns
True if this RoadType can be used.

◆ RemoveRoad()

static bool AIRoad::RemoveRoad ( TileIndex  start,
TileIndex  end 
)
static

Removes a road from the center of tile start to the center of tile end.

Parameters
startThe start tile of the road.
endThe end tile of the road.
Precondition
'start' is not equal to 'end'.
AIMap::IsValidTile(start).
AIMap::IsValidTile(end).
'start' and 'end' are in a straight line, i.e. AIMap::GetTileX(start) == AIMap::GetTileX(end) or AIMap::GetTileY(start) == AIMap::GetTileY(end).
IsRoadTypeAvailable(GetCurrentRoadType()).
Exceptions
AIError::ERR_OWNED_BY_ANOTHER_COMPANY
AIError::ERR_VEHICLE_IN_THE_WAY
AIRoad::ERR_ROAD_WORKS_IN_PROGRESS
Returns
Whether the road has been/can be removed or not.

◆ RemoveRoadDepot()

static bool AIRoad::RemoveRoadDepot ( TileIndex  tile)
static

Removes a road depot.

Parameters
tilePlace to remove the depot from.
Precondition
AIMap::IsValidTile(tile).
Tile is a road depot.
Exceptions
AIError::ERR_OWNED_BY_ANOTHER_COMPANY
AIError::ERR_VEHICLE_IN_THE_WAY
Returns
Whether the road depot has been/can be removed or not.

◆ RemoveRoadFull()

static bool AIRoad::RemoveRoadFull ( TileIndex  start,
TileIndex  end 
)
static

Removes a road from the edge of tile start to the edge of tile end (both included).

Parameters
startThe start tile of the road.
endThe end tile of the road.
Precondition
'start' is not equal to 'end'.
AIMap::IsValidTile(start).
AIMap::IsValidTile(end).
'start' and 'end' are in a straight line, i.e. AIMap::GetTileX(start) == AIMap::GetTileX(end) or AIMap::GetTileY(start) == AIMap::GetTileY(end).
IsRoadTypeAvailable(GetCurrentRoadType()).
Exceptions
AIError::ERR_OWNED_BY_ANOTHER_COMPANY
AIError::ERR_VEHICLE_IN_THE_WAY
AIRoad::ERR_ROAD_WORKS_IN_PROGRESS
Returns
Whether the road has been/can be removed or not.

◆ RemoveRoadStation()

static bool AIRoad::RemoveRoadStation ( TileIndex  tile)
static

Removes a road bus or truck station.

Parameters
tilePlace to remove the station from.
Precondition
AIMap::IsValidTile(tile).
Tile is a road station.
Exceptions
AIError::ERR_OWNED_BY_ANOTHER_COMPANY
AIError::ERR_VEHICLE_IN_THE_WAY
Returns
Whether the station has been/can be removed or not.

◆ RoadVehCanRunOnRoad()

static bool AIRoad::RoadVehCanRunOnRoad ( AIRoad::RoadType  engine_road_type,
AIRoad::RoadType  road_road_type 
)
static

Check if a road vehicle built for a road type can run on another road type.

Parameters
engine_road_typeThe road type the road vehicle is built for.
road_road_typeThe road type you want to check.
Precondition
AIRoad::IsRoadTypeAvailable(engine_road_type).
AIRoad::IsRoadTypeAvailable(road_road_type).
Returns
Whether a road vehicle built for 'engine_road_type' can run on 'road_road_type'.

◆ RoadVehHasPowerOnRoad()

static bool AIRoad::RoadVehHasPowerOnRoad ( AIRoad::RoadType  engine_road_type,
AIRoad::RoadType  road_road_type 
)
static

Check if a road vehicle built for a road type has power on another road type.

Parameters
engine_road_typeThe road type the road vehicle is built for.
road_road_typeThe road type you want to check.
Precondition
AIRoad::IsRoadTypeAvailable(engine_road_type).
AIRoad::IsRoadTypeAvailable(road_road_type).
Returns
Whether a road vehicle built for 'engine_road_type' has power on 'road_road_type'.

◆ SetCurrentRoadType()

static void AIRoad::SetCurrentRoadType ( RoadType  road_type)
static

Set the RoadType for all further AIRoad functions.

Parameters
road_typeThe RoadType to set.