OpenTTD Source: EngineOverrideManager Struct Reference

OpenTTD Source 15.0-RC2

Public Member Functions | Static Public Member Functions | Data Fields
EngineOverrideManager Struct Reference

Stores the mapping of EngineID to the internal id of newgrfs. More...

`#include <engine_base.h>`

## Public Member Functions
void | ResetToDefaultMapping ()
| Initializes the EngineOverrideManager with the default engines.
EngineID | GetID (VehicleType type, uint16_t grf_local_id, uint32_t grfid)
| Looks up an EngineID in the EngineOverrideManager.
EngineID | UseUnreservedID (VehicleType type, uint16_t grf_local_id, uint32_t grfid, bool static_access)
| Look for an unreserved EngineID matching the local id, and reserve it if found.
void | SetID (VehicleType type, uint16_t grf_local_id, uint32_t grfid, uint8_t substitute_id, EngineID engine)

## Static Public Member Functions
static bool | ResetToCurrentNewGRFConfig ()
| Tries to reset the engine mapping to match the current NewGRF configuration.

## Data Fields
std::array< std::vector< EngineIDMapping >, VEH_COMPANY_END > | mappings

## Detailed Description

Stores the mapping of EngineID to the internal id of newgrfs.

Note: This is not part of Engine, as the data in the EngineOverrideManager and the engine pool get reset in different cases.

Definition at line 228 of file engine_base.h.

## Member Function Documentation

## ◆ GetID()

EngineID EngineOverrideManager::GetID | ( | VehicleType | type,
|  | uint16_t | grf_local_id,
|  | uint32_t | grfid
| ) |  |

Looks up an EngineID in the EngineOverrideManager.

Parameters

  type | Vehicle type
  grf_local_id | The local id in the newgrf
  grfid | The GrfID that defines the scope of grf_local_id. If a newgrf overrides the engines of another newgrf, the "scope grfid" is the ID of the overridden newgrf. If dynamic_engines is disabled, all newgrf share the same ID scope identified by INVALID_GRFID.

Returns
  The engine ID if present, or EngineID::Invalid() if not.

Definition at line 529 of file engine.cpp.

Referenced by CommitVehicleListOrderChanges(), GetNewEngine(), and GetNewEngineID().

## ◆ ResetToCurrentNewGRFConfig()

bool EngineOverrideManager::ResetToCurrentNewGRFConfig | ( |  | ) |
| static

Tries to reset the engine mapping to match the current NewGRF configuration.

This is only possible when there are currently no vehicles in the game.

Returns
  false if resetting failed due to present vehicles.

Definition at line 584 of file engine.cpp.

References IsCompanyBuildableVehicleType(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_vehicle_pool >::Iterate(), ReloadNewGRFData(), and ResetToDefaultMapping().

Referenced by CheckDynamicEngines(), ConResetEnginePool(), OnStartScenario(), and ResetLandscapeConfirmationCallback().

## ◆ ResetToDefaultMapping()

void EngineOverrideManager::ResetToDefaultMapping | ( |  | ) |

Initializes the EngineOverrideManager with the default engines.

Definition at line 508 of file engine.cpp.

References _engine_counts, VEH_AIRCRAFT, and VEH_TRAIN.

Referenced by ResetPersistentNewGRFData(), and ResetToCurrentNewGRFConfig().

## ◆ SetID()

void EngineOverrideManager::SetID | ( | VehicleType | type,
|  | uint16_t | grf_local_id,
|  | uint32_t | grfid,
|  | uint8_t | substitute_id,
|  | EngineID | engine
| ) |  |

Definition at line 567 of file engine.cpp.

## ◆ UseUnreservedID()

EngineID EngineOverrideManager::UseUnreservedID | ( | VehicleType | type,
|  | uint16_t | grf_local_id,
|  | uint32_t | grfid,
|  | bool | static_access
| ) |  |

Look for an unreserved EngineID matching the local id, and reserve it if found.

Parameters

  type | Vehicle type
  grf_local_id | The local id in the newgrf
  grfid | The GrfID that defines the scope of grf_local_id. If a newgrf overrides the engines of another newgrf, the "scope grfid" is the ID of the overridden newgrf. If dynamic_engines is disabled, all newgrf share the same ID scope identified by INVALID_GRFID.
  static_access | Whether to actually reserve the EngineID.

Returns
  The engine ID if present and now reserved, or EngineID::Invalid() if not.

Definition at line 548 of file engine.cpp.

References Slide().

Referenced by GetNewEngine().

## Field Documentation

## ◆ mappings

std::array<std::vector<EngineIDMapping>, VEH_COMPANY_END> EngineOverrideManager::mappings

Definition at line 229 of file engine_base.h.

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

- src/engine_base.h
- src/engine.cpp