OpenTTD AI API: AIEngine Class Reference

OpenTTD AI API 15.0-RC4

Static Public Member Functions
AIEngine Class Reference

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

`#include <script_engine.hpp>`

Inheritance diagram for AIEngine:

## Static Public Member Functions
static bool | IsValidEngine (EngineID engine_id)
| Checks whether the given engine type is valid.
static bool | IsBuildable (EngineID engine_id)
| Checks whether the given engine type is buildable for a company.
static string | GetName (EngineID engine_id)
| Get the name of an engine.
static CargoType | GetCargoType (EngineID engine_id)
| Get the cargo-type of an engine.
static bool | CanRefitCargo (EngineID engine_id, CargoType cargo_type)
| Check if the cargo of an engine can be refitted to your requested.
static bool | CanPullCargo (EngineID engine_id, CargoType cargo_type)
| Check if the engine can pull a wagon with the given cargo.
static int | GetCapacity (EngineID engine_id)
| Get the capacity of an engine.
static int | GetReliability (EngineID engine_id)
| Get the reliability of an engine.
static int | GetMaxSpeed (EngineID engine_id)
| Get the maximum speed of an engine.
static Money | GetPrice (EngineID engine_id)
| Get the new cost of an engine.
static int | GetMaxAge (EngineID engine_id)
| Get the maximum age of a brand new engine.
static Money | GetRunningCost (EngineID engine_id)
| Get the running cost of an engine.
static int | GetPower (EngineID engine_id)
| Get the power of an engine.
static int | GetWeight (EngineID engine_id)
| Get the weight of an engine.
static int | GetMaxTractiveEffort (EngineID engine_id)
| Get the maximum tractive effort of an engine.
static AIDate::Date | GetDesignDate (EngineID engine_id)
| Get the calendar-date this engine was designed.
static AIVehicle::VehicleType | GetVehicleType (EngineID engine_id)
| Get the type of an engine.
static bool | IsWagon (EngineID engine_id)
| Check if an engine is a wagon.
static bool | CanRunOnRail (EngineID engine_id, AIRail::RailType track_rail_type)
| Check if a train vehicle can run on a RailType.
static bool | HasPowerOnRail (EngineID engine_id, AIRail::RailType track_rail_type)
| Check if a train engine has power on a RailType.
static bool | CanRunOnRoad (EngineID engine_id, AIRoad::RoadType road_type)
| Check if a road vehicle can run on a RoadType.
static bool | HasPowerOnRoad (EngineID engine_id, AIRoad::RoadType road_type)
| Check if a road vehicle has power on a RoadType.
static AIRoad::RoadType | GetRoadType (EngineID engine_id)
| Get the RoadType of the engine.
static AIRail::RailType | GetRailType (EngineID engine_id)
| Get the first RailType of the engine.
static AIList * | GetAllRailTypes (EngineID engine_id)
| Get a list of all RailTypes of the engine.
static bool | IsArticulated (EngineID engine_id)
| Check if the engine is articulated.
static AIAirport::PlaneType | GetPlaneType (EngineID engine_id)
| Get the PlaneType of the engine.
static int | GetMaximumOrderDistance (EngineID engine_id)
| Get the maximum allowed distance between two orders for an engine.

## Detailed Description

Class that handles all engine related functions.

## Member Function Documentation

## ◆ CanPullCargo()

static bool AIEngine::CanPullCargo | ( | EngineID | engine_id,
|  | CargoType | cargo_type
| ) |  |
| static

Check if the engine can pull a wagon with the given cargo.

Parameters

  engine_id | The engine to check.
  cargo_type | The cargo to check.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_RAIL.
  AICargo::IsValidCargo(cargo_type).

Returns
  True if the engine can pull wagons carrying this cargo.

Note
  This function is not exhaustive; a true here does not mean that the vehicle can pull the wagons, a false does mean it can't.

## ◆ CanRefitCargo()

static bool AIEngine::CanRefitCargo | ( | EngineID | engine_id,
|  | CargoType | cargo_type
| ) |  |
| static

Check if the cargo of an engine can be refitted to your requested.

If the engine already allows this cargo, the function also returns true. In case of articulated vehicles the function decides whether at least one part can carry the cargo.

Parameters

  engine_id | The engine to check for refitting.
  cargo_type | The cargo to check for refitting.

Precondition
  IsValidEngine(engine_id).
  AICargo::IsValidCargo(cargo_type).

Returns
  True if the engine can carry this cargo, either via refit, or by default.

## ◆ CanRunOnRail()

static bool AIEngine::CanRunOnRail | ( | EngineID | engine_id,
|  | AIRail::RailType | track_rail_type
| ) |  |
| static

Check if a train vehicle can run on a RailType.

Parameters

  engine_id | The engine to check.
  track_rail_type | The type you want to check.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_RAIL.
  AIRail::IsRailTypeAvailable(track_rail_type).

Returns
  Whether an engine of type 'engine_id' can run on 'track_rail_type'.

Note
  Even if a train can run on a RailType that doesn't mean that it'll be able to power the train. Use HasPowerOnRail for that.

## ◆ CanRunOnRoad()

static bool AIEngine::CanRunOnRoad | ( | EngineID | engine_id,
|  | AIRoad::RoadType | road_type
| ) |  |
| static

Check if a road vehicle can run on a RoadType.

Parameters

  engine_id | The engine to check.
  road_type | Another RoadType.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_ROAD.
  AIRoad::IsRoadTypeAvailable(road_type).

Returns
  Whether an engine of type 'engine_id' can run on 'road_type'.

## ◆ GetAllRailTypes()

static AIList * AIEngine::GetAllRailTypes | ( | EngineID | engine_id | ) |
| static

Get a list of all RailTypes of the engine.

Parameters

  engine_id | The engine to get all RailTypes of.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_RAIL.

Returns
  All rail types of the engine.

## ◆ GetCapacity()

static int AIEngine::GetCapacity | ( | EngineID | engine_id | ) |
| static

Get the capacity of an engine.

In case it can transport multiple cargoes, it returns the first/main.

Parameters

  engine_id | The engine to get the capacity of.

Precondition
  IsValidEngine(engine_id).

Returns
  The capacity of the engine.

## ◆ GetCargoType()

static CargoType AIEngine::GetCargoType | ( | EngineID | engine_id | ) |
| static

Get the cargo-type of an engine.

In case it can transport multiple cargoes, it returns the first/main.

Parameters

  engine_id | The engine to get the cargo-type of.

Precondition
  IsValidEngine(engine_id).

Returns
  The cargo-type of the engine.

## ◆ GetDesignDate()

static AIDate::Date AIEngine::GetDesignDate | ( | EngineID | engine_id | ) |
| static

Get the calendar-date this engine was designed.

Parameters

  engine_id | The engine to get the design date of.

Precondition
  IsValidEngine(engine_id).

Returns
  The calendar-date this engine was designed.

See also
  AICalendarTime

## ◆ GetMaxAge()

static int AIEngine::GetMaxAge | ( | EngineID | engine_id | ) |
| static

Get the maximum age of a brand new engine.

Parameters

  engine_id | The engine to get the maximum age of.

Precondition
  IsValidEngine(engine_id).

Returns
  The maximum age of a new engine in calendar-days.

See also
  AICalendarTime

## ◆ GetMaximumOrderDistance()

static int AIEngine::GetMaximumOrderDistance | ( | EngineID | engine_id | ) |
| static

Get the maximum allowed distance between two orders for an engine.

The distance returned is a vehicle-type specific distance independent from other map distances, you may use the result of this function to compare it with the result of AIOrder::GetOrderDistance.

Parameters

  engine_id | The engine to get the max distance for.

Precondition
  IsValidEngine(engine_id).

Returns
  The maximum distance between two orders for the engine or 0 if the distance is unlimited.

Note
  The unit of the order distances is unspecified and should not be compared with map distances

See also
  AIOrder::GetOrderDistance

## ◆ GetMaxSpeed()

static int AIEngine::GetMaxSpeed | ( | EngineID | engine_id | ) |
| static

Get the maximum speed of an engine.

Parameters

  engine_id | The engine to get the maximum speed of.

Precondition
  IsValidEngine(engine_id).

Returns
  The maximum speed the engine has.

Note
  The speed is in OpenTTD's internal speed unit. This is mph / 1.6, which is roughly km/h. To get km/h multiply this number by 1.00584.

## ◆ GetMaxTractiveEffort()

static int AIEngine::GetMaxTractiveEffort | ( | EngineID | engine_id | ) |
| static

Get the maximum tractive effort of an engine.

Parameters

  engine_id | The engine to get the maximum tractive effort of.

Precondition
  IsValidEngine(engine_id).
  (GetVehicleType(engine_id) == AIVehicle::VT_RAIL || GetVehicleType(engine_id) == AIVehicle::VT_ROAD) && !IsWagon(engine_id).

Returns
  The maximum tractive effort of the engine in kN.

## ◆ GetName()

static string AIEngine::GetName | ( | EngineID | engine_id | ) |
| static

Get the name of an engine.

Parameters

  engine_id | The engine to get the name of.

Precondition
  IsValidEngine(engine_id).

Returns
  The name the engine has.

## ◆ GetPlaneType()

static AIAirport::PlaneType AIEngine::GetPlaneType | ( | EngineID | engine_id | ) |
| static

Get the PlaneType of the engine.

Parameters

  engine_id | The engine to get the PlaneType of.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_AIR.

Returns
  The PlaneType the engine has.

## ◆ GetPower()

static int AIEngine::GetPower | ( | EngineID | engine_id | ) |
| static

Get the power of an engine.

Parameters

  engine_id | The engine to get the power of.

Precondition
  IsValidEngine(engine_id).
  (GetVehicleType(engine_id) == AIVehicle::VT_RAIL || GetVehicleType(engine_id) == AIVehicle::VT_ROAD) && !IsWagon(engine_id).

Returns
  The power of the engine in hp.

## ◆ GetPrice()

static Money AIEngine::GetPrice | ( | EngineID | engine_id | ) |
| static

Get the new cost of an engine.

Parameters

  engine_id | The engine to get the new cost of.

Precondition
  IsValidEngine(engine_id).

Returns
  The new cost the engine has.

## ◆ GetRailType()

static AIRail::RailType AIEngine::GetRailType | ( | EngineID | engine_id | ) |
| static

Get the first RailType of the engine.

Note
  This will only return the first RailType of a multi-system engine. Use GetAllRailTypes to get all rail types of the engine.

Parameters

  engine_id | The engine to get the RailType of.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_RAIL.

Returns
  The first RailType the engine has.

## ◆ GetReliability()

static int AIEngine::GetReliability | ( | EngineID | engine_id | ) |
| static

Get the reliability of an engine.

The value is between 0 and 100, where 100 means 100% reliability (never breaks down) and 0 means 0% reliability (you most likely don't want to buy it).

Parameters

  engine_id | The engine to get the reliability of.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) != AIVehicle::VT_TRAIN || !IsWagon(engine_id).

Returns
  The reliability the engine has.

## ◆ GetRoadType()

static AIRoad::RoadType AIEngine::GetRoadType | ( | EngineID | engine_id | ) |
| static

Get the RoadType of the engine.

Parameters

  engine_id | The engine to get the RoadType of.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_ROAD.

Returns
  The RoadType the engine has.

## ◆ GetRunningCost()

static Money AIEngine::GetRunningCost | ( | EngineID | engine_id | ) |
| static

Get the running cost of an engine.

Parameters

  engine_id | The engine to get the running cost of.

Precondition
  IsValidEngine(engine_id).

Returns
  The running cost of a vehicle per economy-year.

See also
  AIEconomyTime

## ◆ GetVehicleType()

static AIVehicle::VehicleType AIEngine::GetVehicleType | ( | EngineID | engine_id | ) |
| static

Get the type of an engine.

Parameters

  engine_id | The engine to get the type of.

Precondition
  IsValidEngine(engine_id).

Returns
  The type the engine has.

## ◆ GetWeight()

static int AIEngine::GetWeight | ( | EngineID | engine_id | ) |
| static

Get the weight of an engine.

Parameters

  engine_id | The engine to get the weight of.

Precondition
  IsValidEngine(engine_id).
  (GetVehicleType(engine_id) == AIVehicle::VT_RAIL || GetVehicleType(engine_id) == AIVehicle::VT_ROAD).

Returns
  The weight of the engine in metric tons.

## ◆ HasPowerOnRail()

static bool AIEngine::HasPowerOnRail | ( | EngineID | engine_id,
|  | AIRail::RailType | track_rail_type
| ) |  |
| static

Check if a train engine has power on a RailType.

Parameters

  engine_id | The engine to check.
  track_rail_type | Another RailType.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_RAIL.
  AIRail::IsRailTypeAvailable(track_rail_type).

Returns
  Whether an engine of type 'engine_id' has power on 'track_rail_type'.

## ◆ HasPowerOnRoad()

static bool AIEngine::HasPowerOnRoad | ( | EngineID | engine_id,
|  | AIRoad::RoadType | road_type
| ) |  |
| static

Check if a road vehicle has power on a RoadType.

Parameters

  engine_id | The engine to check.
  road_type | Another RoadType.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_ROAD.
  AIRoad::IsRoadTypeAvailable(road_type).

Returns
  Whether an engine of type 'engine_id' has power on 'road_type'.

## ◆ IsArticulated()

static bool AIEngine::IsArticulated | ( | EngineID | engine_id | ) |
| static

Check if the engine is articulated.

Parameters

  engine_id | The engine to check.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_ROAD || GetVehicleType(engine_id) == AIVehicle::VT_RAIL.

Returns
  True if the engine is articulated.

## ◆ IsBuildable()

static bool AIEngine::IsBuildable | ( | EngineID | engine_id | ) |
| static

Checks whether the given engine type is buildable for a company.

Parameters

  engine_id | The engine to check.

Returns
  True if and only if the engine type is buildable.

## ◆ IsValidEngine()

static bool AIEngine::IsValidEngine | ( | EngineID | engine_id | ) |
| static

Checks whether the given engine type is valid.

An engine is valid for a company if it has at least one vehicle of this engine or it's currently buildable.

Parameters

  engine_id | The engine to check.

Returns
  True if and only if the engine type is valid.

## ◆ IsWagon()

static bool AIEngine::IsWagon | ( | EngineID | engine_id | ) |
| static

Check if an engine is a wagon.

Parameters

  engine_id | The engine to check.

Precondition
  IsValidEngine(engine_id).
  GetVehicleType(engine_id) == AIVehicle::VT_RAIL.

Returns
  Whether or not the engine is a wagon.