# AIEngine Class Reference

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

`#include <ai_engine.hpp>`

Inheritance diagram for AIEngine:

## Static Public Member Functions
static const char * | GetClassName ()
static bool | IsValidEngine (EngineID engine_id)
| Checks whether the given engine type is valid and buildable by you.
static char * | GetName (EngineID engine_id)
| Get the name of an engine.
static CargoID | GetCargoType (EngineID engine_id)
| Get the cargo-type of an engine.
static bool | CanRefitCargo (EngineID engine_id, CargoID cargo_id)
| Check if the cargo of an engine can be refitted to your requested.
static bool | CanPullCargo (EngineID engine_id, CargoID cargo_id)
| Check if the engine can pull a wagon with the given cargo.
static int32 | GetCapacity (EngineID engine_id)
| Get the capacity of an engine.
static int32 | GetReliability (EngineID engine_id)
| Get the reliability of an engine.
static int32 | 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 int32 | 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 int32 | GetPower (EngineID engine_id)
| Get the power of an engine.
static int32 | GetWeight (EngineID engine_id)
| Get the weight of an engine.
static int32 | GetMaxTractiveEffort (EngineID engine_id)
| Get the maximum tractive effort of an engine.
static int32 | GetDesignDate (EngineID engine_id)
| Get the 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 AIRoad::RoadType | GetRoadType (EngineID engine_id)
| Get the RoadType of the engine.
static AIRail::RailType | GetRailType (EngineID engine_id)
| Get the RailType 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.

## Detailed Description

Class that handles all engine related functions.

Definition at line 17 of file ai_engine.hpp.

## Member Function Documentation

bool AIEngine::IsValidEngine | ( | EngineID | engine_id | ) | `[static]`

Checks whether the given engine type is valid and buildable by you.

Parameters:

  | engine_id | The engine to check.

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

Definition at line 16 of file ai_engine.cpp.

References HasBit().

Referenced by AIVehicle::BuildVehicle(), CanPullCargo(), CanRefitCargo(), CanRunOnRail(), GetCapacity(), GetCargoType(), GetDesignDate(), GetMaxAge(), GetMaxSpeed(), GetMaxTractiveEffort(), GetName(), GetPlaneType(), GetPower(), GetPrice(), GetRailType(), GetReliability(), GetRoadType(), GetRunningCost(), GetVehicleType(), GetWeight(), HasPowerOnRail(), IsArticulated(), IsWagon(), and AIGroup::SetAutoReplace().

char * 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.

Definition at line 21 of file ai_engine.cpp.

References IsValidEngine().

CargoID AIEngine::GetCargoType | ( | EngineID | engine_id | ) | `[static]`

Get the cargo-type of an engine.

In case it can transport 2 cargos, it returns the first.

Parameters:

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

Precondition:
  IsValidEngine(engine_id).

Returns:
  The cargo-type of the engine.

Definition at line 33 of file ai_engine.cpp.

References IsValidEngine().

Referenced by CanRefitCargo().

bool AIEngine::CanRefitCargo | ( | EngineID | engine_id,
|  | CargoID | cargo_id |
| ) |  |  | `[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.

Parameters:

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

Precondition:
  IsValidEngine(engine_id).

  AICargo::IsValidCargo(cargo_id).

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

Definition at line 43 of file ai_engine.cpp.

References CanRefitTo(), GetCargoType(), AICargo::IsValidCargo(), and IsValidEngine().

bool AIEngine::CanPullCargo | ( | EngineID | engine_id,
|  | CargoID | cargo_id |
| ) |  |  | `[static]`

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

Parameters:

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

Precondition:
  IsValidEngine(engine_id).

  GetVehicleType(engine_id) == AIVehicle::VT_RAIL.

  AICargo::IsValidCargo(cargo_id).

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.

Definition at line 54 of file ai_engine.cpp.

References AICargo::CC_PASSENGERS, GetVehicleType(), AICargo::HasCargoClass(), AICargo::IsValidCargo(), IsValidEngine(), and AIVehicle::VT_RAIL.

int32 AIEngine::GetCapacity | ( | EngineID | engine_id | ) | `[static]`

Get the capacity of an engine.

In case it can transport 2 cargos, it returns the first.

Parameters:

  | engine_id | The engine to get the capacity of.

Precondition:
  IsValidEngine(engine_id).

Returns:
  The capacity of the engine.

Definition at line 64 of file ai_engine.cpp.

References IsValidEngine().

int32 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.

Definition at line 89 of file ai_engine.cpp.

References GetVehicleType(), IsValidEngine(), IsWagon(), and AIVehicle::VT_RAIL.

int32 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).

  GetVehicleType(engine_id) != AIVehicle::VT_TRAIN || !IsWagon(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.

Definition at line 97 of file ai_engine.cpp.

References _settings_game, IsValidEngine(), VehicleSettings::plane_speed, and GameSettings::vehicle.

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.

Definition at line 107 of file ai_engine.cpp.

References IsValidEngine().

int32 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 days.

Note:
  Age is in days; divide by 366 to get per year.

Definition at line 114 of file ai_engine.cpp.

References DAYS_IN_LEAP_YEAR, GetVehicleType(), IsValidEngine(), IsWagon(), and AIVehicle::VT_RAIL.

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 year.

Note:
  Cost is per year; divide by 365 to get per day.

Definition at line 122 of file ai_engine.cpp.

References IsValidEngine().

int32 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 && !IsWagon(engine_id).

Returns:
  The power of the engine in hp.

Definition at line 129 of file ai_engine.cpp.

References GetVehicleType(), IsValidEngine(), IsWagon(), and AIVehicle::VT_RAIL.

int32 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.

Returns:
  The weight of the engine in metric tons.

Definition at line 138 of file ai_engine.cpp.

References GetVehicleType(), IsValidEngine(), and AIVehicle::VT_RAIL.

int32 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 && !IsWagon(engine_id).

Returns:
  The maximum tractive effort of the engine in kN.

Definition at line 146 of file ai_engine.cpp.

References GetVehicleType(), IsValidEngine(), IsWagon(), and AIVehicle::VT_RAIL.

int32 AIEngine::GetDesignDate | ( | EngineID | engine_id | ) | `[static]`

Get the date this engine was designed.

Parameters:

  | engine_id | The engine to get the design date of.

Precondition:
  IsValidEngine(engine_id).

Returns:
  The date this engine was designed.

Definition at line 155 of file ai_engine.cpp.

References IsValidEngine().

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.

Definition at line 162 of file ai_engine.cpp.

References IsValidEngine(), AIVehicle::VT_AIR, AIVehicle::VT_INVALID, AIVehicle::VT_RAIL, AIVehicle::VT_ROAD, and AIVehicle::VT_WATER.

Referenced by CanPullCargo(), CanRunOnRail(), GetMaxAge(), GetMaxTractiveEffort(), GetPlaneType(), GetPower(), GetRailType(), GetReliability(), GetRoadType(), GetWeight(), HasPowerOnRail(), IsArticulated(), and IsWagon().

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.

Definition at line 175 of file ai_engine.cpp.

References GetVehicleType(), IsValidEngine(), and AIVehicle::VT_RAIL.

Referenced by GetMaxAge(), GetMaxTractiveEffort(), GetPower(), and GetReliability().

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.

Definition at line 183 of file ai_engine.cpp.

References GetVehicleType(), IsCompatibleRail(), AIRail::IsRailTypeAvailable(), IsValidEngine(), and AIVehicle::VT_RAIL.

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'.

Definition at line 192 of file ai_engine.cpp.

References GetVehicleType(), HasPowerOnRail(), AIRail::IsRailTypeAvailable(), IsValidEngine(), and AIVehicle::VT_RAIL.

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.

Definition at line 201 of file ai_engine.cpp.

References EF_ROAD_TRAM, GetVehicleType(), HasBit(), IsValidEngine(), AIRoad::ROADTYPE_INVALID, AIRoad::ROADTYPE_ROAD, AIRoad::ROADTYPE_TRAM, and AIVehicle::VT_ROAD.

AIRail::RailType AIEngine::GetRailType | ( | EngineID | engine_id | ) | `[static]`

Get the RailType 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 RailType the engine has.

Definition at line 209 of file ai_engine.cpp.

References GetVehicleType(), IsValidEngine(), AIRail::RAILTYPE_INVALID, and AIVehicle::VT_RAIL.

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.

Definition at line 217 of file ai_engine.cpp.

References GetVehicleType(), IsValidEngine(), AIVehicle::VT_RAIL, and AIVehicle::VT_ROAD.

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.

Definition at line 225 of file ai_engine.cpp.

References GetVehicleType(), IsValidEngine(), AIAirport::PT_INVALID, and AIVehicle::VT_AIR.

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

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