Public Types | |
enum | ErrorMessages { ERR_RAIL_BASE = AIError::ERR_CAT_RAIL << AIError::ERR_CAT_BIT_SIZE, ERR_CROSSING_ON_ONEWAY_ROAD, ERR_UNSUITABLE_TRACK, ERR_NONUNIFORM_STATIONS_DISABLED } |
All rail related error messages. More... | |
enum | RailType { RAILTYPE_INVALID = 0xFF } |
Types of rail known to the game. More... | |
enum | RailTrack { RAILTRACK_NE_SW = 1 << 0, RAILTRACK_NW_SE = 1 << 1, RAILTRACK_NW_NE = 1 << 2, RAILTRACK_SW_SE = 1 << 3, RAILTRACK_NW_SW = 1 << 4, RAILTRACK_NE_SE = 1 << 5, RAILTRACK_INVALID = 0xFF } |
A bitmap with all possible rail tracks on a tile. More... | |
enum | SignalType { SIGNALTYPE_NORMAL = 0, SIGNALTYPE_ENTRY = 1, SIGNALTYPE_EXIT = 2, SIGNALTYPE_COMBO = 3, SIGNALTYPE_PBS = 4, SIGNALTYPE_PBS_ONEWAY = 5, SIGNALTYPE_TWOWAY = 8, SIGNALTYPE_NORMAL_TWOWAY = SIGNALTYPE_NORMAL | SIGNALTYPE_TWOWAY, SIGNALTYPE_ENTRY_TWOWAY = SIGNALTYPE_ENTRY | SIGNALTYPE_TWOWAY, SIGNALTYPE_EXIT_TWOWAY = SIGNALTYPE_EXIT | SIGNALTYPE_TWOWAY, SIGNALTYPE_COMBO_TWOWAY = SIGNALTYPE_COMBO | SIGNALTYPE_TWOWAY, SIGNALTYPE_NONE = 0xFF } |
Types of signal known to the game. More... | |
Static Public Member Functions | |
static bool | IsRailTile (TileIndex tile) |
Checks whether the given tile is actually a tile with rail that can be used to traverse a tile. | |
static bool | IsLevelCrossingTile (TileIndex tile) |
Checks whether there is a road / rail crossing on a tile. | |
static bool | IsRailDepotTile (TileIndex tile) |
Checks whether the given tile is actually a tile with a rail depot. | |
static bool | IsRailStationTile (TileIndex tile) |
Checks whether the given tile is actually a tile with a rail station. | |
static bool | IsRailWaypointTile (TileIndex tile) |
Checks whether the given tile is actually a tile with a rail waypoint. | |
static bool | IsRailTypeAvailable (RailType rail_type) |
Check if a given RailType is available. | |
static RailType | GetCurrentRailType () |
Get the current RailType set for all AIRail functions. | |
static void | SetCurrentRailType (RailType rail_type) |
Set the RailType for all further AIRail functions. | |
static bool | TrainCanRunOnRail (AIRail::RailType engine_rail_type, AIRail::RailType track_rail_type) |
Check if a train build for a rail type can run on another rail type. | |
static bool | TrainHasPowerOnRail (AIRail::RailType engine_rail_type, AIRail::RailType track_rail_type) |
Check if a train build for a rail type has power on another rail type. | |
static RailType | GetRailType (TileIndex tile) |
Get the RailType that is used on a tile. | |
static bool | ConvertRailType (TileIndex start_tile, TileIndex end_tile, AIRail::RailType convert_to) |
Convert the tracks on all tiles within a rectangle to another RailType. | |
static TileIndex | GetRailDepotFrontTile (TileIndex depot) |
Gets the tile in front of a rail depot. | |
static RailTrack | GetRailStationDirection (TileIndex tile) |
Gets the direction of a rail station tile. | |
static bool | BuildRailDepot (TileIndex tile, TileIndex front) |
Builds a rail depot. | |
static bool | BuildRailStation (TileIndex tile, RailTrack direction, uint num_platforms, uint platform_length, StationID station_id) |
Build a rail station. | |
static bool | BuildNewGRFRailStation (TileIndex tile, RailTrack direction, uint num_platforms, uint platform_length, StationID station_id, CargoID cargo_id, IndustryType source_industry, IndustryType goal_industry, int distance, bool source_station) |
Build a NewGRF rail station. | |
static bool | BuildRailWaypoint (TileIndex tile) |
Build a rail waypoint. | |
static bool | RemoveRailWaypoint (TileIndex tile) |
Remove a rail waypoint. | |
static bool | RemoveRailStationTileRect (TileIndex tile, TileIndex tile2) |
Remove a rectangle of platform pieces from a rail station. | |
static uint | GetRailTracks (TileIndex tile) |
Get all RailTracks on the given tile. | |
static bool | BuildRailTrack (TileIndex tile, RailTrack rail_track) |
Build rail on the given tile. | |
static bool | RemoveRailTrack (TileIndex tile, RailTrack rail_track) |
Remove rail on the given tile. | |
static bool | AreTilesConnected (TileIndex from, TileIndex tile, TileIndex to) |
Check if a tile connects two adjacent tiles. | |
static bool | BuildRail (TileIndex from, TileIndex tile, TileIndex to) |
Build a rail connection between two tiles. | |
static bool | RemoveRail (TileIndex from, TileIndex tile, TileIndex to) |
Remove a rail connection between two tiles. | |
static SignalType | GetSignalType (TileIndex tile, TileIndex front) |
Get the SignalType of the signal on a tile or SIGNALTYPE_NONE if there is no signal. | |
static bool | BuildSignal (TileIndex tile, TileIndex front, SignalType signal) |
Build a signal on a tile. | |
static bool | RemoveSignal (TileIndex tile, TileIndex front) |
Remove a signal. |
enum AIRail::RailTrack |
A bitmap with all possible rail tracks on a tile.
enum AIRail::RailType |
enum AIRail::SignalType |
Types of signal known to the game.
Check if a tile connects two adjacent tiles.
from | The first tile to connect. | |
tile | The tile that is checked. | |
to | The second tile to connect. |
AIMap::DistanceManhattan(from, tile) == 1.
AIMap::DistanceManhattan(to, tile) == 1.
static bool AIRail::BuildNewGRFRailStation | ( | TileIndex | tile, | |
RailTrack | direction, | |||
uint | num_platforms, | |||
uint | platform_length, | |||
StationID | station_id, | |||
CargoID | cargo_id, | |||
IndustryType | source_industry, | |||
IndustryType | goal_industry, | |||
int | distance, | |||
bool | source_station | |||
) | [static] |
Build a NewGRF rail station.
This calls callback 18 to let a NewGRF provide the station class / id to build, so we don't end up with only the default stations on the map.
tile | Place to build the station. | |
direction | The direction to build the station. | |
num_platforms | The number of platforms to build. | |
platform_length | The length of each platform. | |
station_id | The station to join, AIStation::STATION_NEW or AIStation::STATION_JOIN_ADJACENT. | |
cargo_id | The CargoID of the cargo that will be transported from / to this station. | |
source_industry | The IndustryType of the industry you'll transport goods from. | |
goal_industry | The IndustryType of the industry you'll transport goods to. | |
distance | The manhattan distance you'll transport the cargo over. | |
source_station | True if this is the source station, false otherwise. |
AIMap::IsValidTile(tile).
direction == RAILTRACK_NW_SE || direction == RAILTRACK_NE_SW.
num_platforms > 0 && num_platforms <= 255.
platform_length > 0 && platform_length <= 255.
station_id == AIStation::STATION_NEW || station_id == AIStation::STATION_JOIN_ADJACENT || AIStation::IsValidStation(station_id).
Build a rail connection between two tiles.
from | The tile just before the tile to build on. | |
tile | The first tile to build on. | |
to | The tile just after the last tile to build on. |
AIMap::DistanceManhattan(from, tile) == 1.
AIMap::DistanceManhattan(to, tile) >= 1.
(abs(abs(AIMap::GetTileX(to) - AIMap::GetTileX(tile)) - abs(AIMap::GetTileY(to) - AIMap::GetTileY(tile))) <= 1) || (AIMap::GetTileX(from) == AIMap::GetTileX(tile) && AIMap::GetTileX(tile) == AIMap::GetTileX(to)) || (AIMap::GetTileY(from) == AIMap::GetTileY(tile) && AIMap::GetTileY(tile) == AIMap::GetTileY(to)).
IsRailTypeAvailable(GetCurrentRailType()).
AIError::ERR_AREA_NOT_CLEAR | ||
AIError::ERR_LAND_SLOPED_WRONG | ||
AIRail::ERR_CROSSING_ON_ONEWAY_ROAD | ||
AIRoad::ERR_ROAD_WORKS_IN_PROGRESS | ||
AIError::ERR_ALREADY_BUILT |
Builds a rail depot.
tile | Place to build the depot. | |
front | The tile exactly in front of the depot. |
AIMap::IsValidTile(front).
'tile' is not equal to 'front', but in a straight line of it.
IsRailTypeAvailable(GetCurrentRailType()).
static bool AIRail::BuildRailStation | ( | TileIndex | tile, | |
RailTrack | direction, | |||
uint | num_platforms, | |||
uint | platform_length, | |||
StationID | station_id | |||
) | [static] |
Build a rail station.
tile | Place to build the station. | |
direction | The direction to build the station. | |
num_platforms | The number of platforms to build. | |
platform_length | The length of each platform. | |
station_id | The station to join, AIStation::STATION_NEW or AIStation::STATION_JOIN_ADJACENT. |
AIMap::IsValidTile(tile).
direction == RAILTRACK_NW_SE || direction == RAILTRACK_NE_SW.
num_platforms > 0 && num_platforms <= 255.
platform_length > 0 && platform_length <= 255.
station_id == AIStation::STATION_NEW || station_id == AIStation::STATION_JOIN_ADJACENT || AIStation::IsValidStation(station_id).
Build rail on the given tile.
tile | The tile to build on. | |
rail_track | The RailTrack to build. |
IsRailTypeAvailable(GetCurrentRailType()).
AIError::ERR_AREA_NOT_CLEAR | ||
AIError::ERR_LAND_SLOPED_WRONG | ||
AIRoad::ERR_ROAD_WORKS_IN_PROGRESS | ||
AIRail::ERR_CROSSING_ON_ONEWAY_ROAD | ||
AIError::ERR_ALREADY_BUILT |
static bool AIRail::BuildRailWaypoint | ( | TileIndex | tile | ) | [static] |
Build a rail waypoint.
tile | Place to build the waypoint. |
IsRailTile(tile).
GetRailTracks(tile) == RAILTRACK_NE_SW || GetRailTracks(tile) == RAILTRACK_NW_SE.
IsRailTypeAvailable(GetCurrentRailType()).
AIError::ERR_FLAT_LAND_REQUIRED |
static bool AIRail::BuildSignal | ( | TileIndex | tile, | |
TileIndex | front, | |||
SignalType | signal | |||
) | [static] |
Build a signal on a tile.
tile | The tile to build on. | |
front | The tile in front of the signal. | |
signal | The SignalType to build. |
IsRailTile(tile) && !IsRailStationTile(tile) && !IsRailWaypointTile(tile).
AIRail::ERR_UNSUITABLE_TRACK |
static bool AIRail::ConvertRailType | ( | TileIndex | start_tile, | |
TileIndex | end_tile, | |||
AIRail::RailType | convert_to | |||
) | [static] |
Convert the tracks on all tiles within a rectangle to another RailType.
start_tile | One corner of the rectangle. | |
end_tile | The opposite corner of the rectangle. | |
convert_to | The RailType you want to convert the rails to. |
AIMap::IsValidTile(end_tile).
IsRailTypeAvailable(convert_to).
AIRail::ERR_UNSUITABLE_TRACK |
static RailType AIRail::GetCurrentRailType | ( | ) | [static] |
Gets the tile in front of a rail depot.
depot | The rail depot tile. |
Gets the direction of a rail station tile.
tile | The rail station tile. |
static uint AIRail::GetRailTracks | ( | TileIndex | tile | ) | [static] |
Get all RailTracks on the given tile.
tile | The tile to check. |
Get the RailType that is used on a tile.
tile | The tile to check. |
static SignalType AIRail::GetSignalType | ( | TileIndex | tile, | |
TileIndex | front | |||
) | [static] |
Get the SignalType of the signal on a tile or SIGNALTYPE_NONE if there is no signal.
tile | The tile that might have a signal. | |
front | The tile in front of 'tile'. |
static bool AIRail::IsLevelCrossingTile | ( | TileIndex | tile | ) | [static] |
Checks whether there is a road / rail crossing on a tile.
tile | The tile to check. |
static bool AIRail::IsRailDepotTile | ( | TileIndex | tile | ) | [static] |
Checks whether the given tile is actually a tile with a rail depot.
tile | The tile to check. |
static bool AIRail::IsRailStationTile | ( | TileIndex | tile | ) | [static] |
Checks whether the given tile is actually a tile with a rail station.
tile | The tile to check. |
static bool AIRail::IsRailTile | ( | TileIndex | tile | ) | [static] |
Checks whether the given tile is actually a tile with rail that can be used to traverse a tile.
This excludes rail depots but includes stations and waypoints.
tile | The tile to check. |
static bool AIRail::IsRailTypeAvailable | ( | RailType | rail_type | ) | [static] |
Check if a given RailType is available.
rail_type | The RailType to check for. |
static bool AIRail::IsRailWaypointTile | ( | TileIndex | tile | ) | [static] |
Checks whether the given tile is actually a tile with a rail waypoint.
tile | The tile to check. |
Remove a rail connection between two tiles.
from | The tile just before the tile to remove rail from. | |
tile | The first tile to remove rail from. | |
to | The tile just after the last tile to remove rail from. |
AIMap::DistanceManhattan(from, tile) == 1.
AIMap::DistanceManhattan(to, tile) >= 1.
(abs(abs(AIMap::GetTileX(to) - AIMap::GetTileX(tile)) - abs(AIMap::GetTileY(to) - AIMap::GetTileY(tile))) <= 1) || (AIMap::GetTileX(from) == AIMap::GetTileX(tile) && AIMap::GetTileX(tile) == AIMap::GetTileX(to)) || (AIMap::GetTileY(from) == AIMap::GetTileY(tile) && AIMap::GetTileY(tile) == AIMap::GetTileY(to)).
Remove a rectangle of platform pieces from a rail station.
tile | One corner of the rectangle to clear. | |
tile2 | The oppposite corner. |
IsValidTile(tile2).
Remove rail on the given tile.
tile | The tile to remove rail from. | |
rail_track | The RailTrack to remove. |
(GetRailTracks(tile) & rail_track) != 0.
static bool AIRail::RemoveRailWaypoint | ( | TileIndex | tile | ) | [static] |
Remove a rail waypoint.
tile | Place to remove the waypoint from. |
IsRailWaypointTile(tile).
Remove a signal.
tile | The tile to remove the signal from. | |
front | The tile in front of the signal. |
GetSignalType(tile, front) != SIGNALTYPE_NONE.
static void AIRail::SetCurrentRailType | ( | RailType | rail_type | ) | [static] |
static bool AIRail::TrainCanRunOnRail | ( | AIRail::RailType | engine_rail_type, | |
AIRail::RailType | track_rail_type | |||
) | [static] |
Check if a train build for a rail type can run on another rail type.
engine_rail_type | The rail type the train is build for. | |
track_rail_type | The type you want to check. |
AIRail::IsRailTypeAvailable(track_rail_type).
static bool AIRail::TrainHasPowerOnRail | ( | AIRail::RailType | engine_rail_type, | |
AIRail::RailType | track_rail_type | |||
) | [static] |
Check if a train build for a rail type has power on another rail type.
engine_rail_type | The rail type the train is build for. | |
track_rail_type | The type you want to check. |
AIRail::IsRailTypeAvailable(track_rail_type).