# autoreplace_func.h File Reference

Functions related to autoreplacing. More...

`#include "command_type.h"`
`#include "company_base.h"`
`#include "engine_type.h"`
`#include "group_type.h"`

Go to the source code of this file.

## Functions
void | RemoveAllEngineReplacement (EngineRenewList *erl)
| Remove all engine replacement settings for the company.
EngineID | EngineReplacement (EngineRenewList erl, EngineID engine, GroupID group)
| Retrieve the engine replacement in a given renewlist for an original engine type.
CommandCost | AddEngineReplacement (EngineRenewList *erl, EngineID old_engine, EngineID new_engine, GroupID group, DoCommandFlag flags)
| Add an engine replacement to the given renewlist.
CommandCost | RemoveEngineReplacement (EngineRenewList *erl, EngineID engine, GroupID group, DoCommandFlag flags)
| Remove an engine replacement from a given renewlist.
static void | RemoveAllEngineReplacementForCompany (Company *c)
| Remove all engine replacement settings for the given company.
static EngineID | EngineReplacementForCompany (const Company *c, EngineID engine, GroupID group)
| Retrieve the engine replacement for the given company and original engine type.
static bool | EngineHasReplacementForCompany (const Company *c, EngineID engine, GroupID group)
| Check if a company has a replacement set up for the given engine.
static CommandCost | AddEngineReplacementForCompany (Company *c, EngineID old_engine, EngineID new_engine, GroupID group, DoCommandFlag flags)
| Add an engine replacement for the company.
static CommandCost | RemoveEngineReplacementForCompany (Company *c, EngineID engine, GroupID group, DoCommandFlag flags)
| Remove an engine replacement for the company.
bool | CheckAutoreplaceValidity (EngineID from, EngineID to, CompanyID company)
| Checks some basic properties whether autoreplace is allowed.

## Detailed Description

Functions related to autoreplacing.

Definition in file autoreplace_func.h.

## Function Documentation

CommandCost AddEngineReplacement | ( | EngineRenewList * | erl,
|  | EngineID | old_engine,
|  | EngineID | new_engine,
|  | GroupID | group,
|  | DoCommandFlag | flags |
| ) |  |  |

Add an engine replacement to the given renewlist.

Parameters:

  | erl | The renewlist to add to.
  | old_engine | The original engine type.
  | new_engine | The replacement engine type.
  | group | The group related to this replacement.
  | flags | The calling command flags.

Returns:
  0 on success, CMD_ERROR on failure.

Definition at line 58 of file autoreplace.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_enginerenew_pool >::CanAllocateItem(), CMD_ERROR, DC_EXEC, and GetEngineReplacement().

Referenced by AddEngineReplacementForCompany().

static CommandCost AddEngineReplacementForCompany | ( | Company * | c,
|  | EngineID | old_engine,
|  | EngineID | new_engine,
|  | GroupID | group,
|  | DoCommandFlag | flags |
| ) |  |  | `[inline, static]`

Add an engine replacement for the company.

Parameters:

  | c | Company.
  | old_engine | The original engine type.
  | new_engine | The replacement engine type.
  | group | The group related to this replacement.
  | flags | The calling command flags.

Returns:
  0 on success, CMD_ERROR on failure.

Definition at line 101 of file autoreplace_func.h.

References AddEngineReplacement(), and Company::engine_renew_list.

Referenced by CmdSetAutoReplace().

bool CheckAutoreplaceValidity | ( | EngineID | from,
|  | EngineID | to,
|  | CompanyID | company |
| ) |  |  |

Checks some basic properties whether autoreplace is allowed.

Parameters:

  | from | Origin engine
  | to | Destination engine
  | company | Company to check for

Returns:
  true if autoreplace is allowed

Definition at line 51 of file autoreplace_cmd.cpp.

References AIR_CTOL, RailtypeInfo::compatible_railtypes, EF_ROAD_TRAM, EnginesHaveCargoInCommon(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), GetRailTypeInfo(), HasBit(), IsEngineBuildable(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_engine_pool >::IsValidID(), RAILVEH_WAGON, Engine::type, VEH_AIRCRAFT, VEH_ROAD, and VEH_TRAIN.

Referenced by CmdSetAutoReplace(), and ReplaceVehicleWindow::GenerateReplaceVehList().

static bool EngineHasReplacementForCompany | ( | const Company * | c,
|  | EngineID | engine,
|  | GroupID | group |
| ) |  |  | `[inline, static]`

Check if a company has a replacement set up for the given engine.

Parameters:

  | c | Company.
  | engine | Engine type to be replaced.
  | group | The group related to this replacement.

Returns:
  true if a replacement was set up, false otherwise.

Definition at line 87 of file autoreplace_func.h.

References EngineReplacementForCompany().

Referenced by ReplaceVehicleWindow::DrawWidget(), and ReplaceVehicleWindow::OnPaint().

EngineID EngineReplacement | ( | EngineRenewList | erl,
|  | EngineID | engine,
|  | GroupID | group |
| ) |  |  |

Retrieve the engine replacement in a given renewlist for an original engine type.

Parameters:

  | erl | The renewlist to search in.
  | engine | Engine type to be replaced.
  | group | The group related to this replacement.

Returns:
  The engine type to replace with, or INVALID_ENGINE if no replacement is in the list.

Definition at line 48 of file autoreplace.cpp.

References DEFAULT_GROUP, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::Get(), GetEngineReplacement(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::IsValidID().

Referenced by EngineReplacementForCompany().

static EngineID EngineReplacementForCompany | ( | const Company * | c,
|  | EngineID | engine,
|  | GroupID | group |
| ) |  |  | `[inline, static]`

Retrieve the engine replacement for the given company and original engine type.

Parameters:

  | c | company.
  | engine | Engine type.
  | group | The group related to this replacement.

Returns:
  The engine type to replace with, or INVALID_ENGINE if no replacement is in the list.

Definition at line 75 of file autoreplace_func.h.

References Company::engine_renew_list, and EngineReplacement().

Referenced by ReplaceVehicleWindow::DrawWidget(), EngineHasReplacementForCompany(), ReplaceVehicleWindow::GenerateReplaceVehList(), AIGroup::GetEngineReplacement(), GetNewEngineType(), Vehicle::NeedsServicing(), and ReplaceVehicleWindow::OnPaint().

void RemoveAllEngineReplacement | ( | EngineRenewList * | erl | ) |

Remove all engine replacement settings for the company.

Parameters:

  | erl | The renewlist for a given company.

Returns:
  The new renewlist for the company.

Definition at line 35 of file autoreplace.cpp.

Referenced by RemoveAllEngineReplacementForCompany().

static void RemoveAllEngineReplacementForCompany | ( | Company * | c | ) | `[inline, static]`

Remove all engine replacement settings for the given company.

Parameters:

  | c | the company.

Definition at line 62 of file autoreplace_func.h.

References Company::engine_renew_list, and RemoveAllEngineReplacement().

CommandCost RemoveEngineReplacement | ( | EngineRenewList * | erl,
|  | EngineID | engine,
|  | GroupID | group,
|  | DoCommandFlag | flags |
| ) |  |  |

Remove an engine replacement from a given renewlist.

Parameters:

  | erl | The renewlist from which to remove the replacement
  | engine | The original engine type.
  | group | The group related to this replacement.
  | flags | The calling command flags.

Returns:
  0 on success, CMD_ERROR on failure.

Definition at line 83 of file autoreplace.cpp.

References CMD_ERROR, and DC_EXEC.

Referenced by RemoveEngineReplacementForCompany().

static CommandCost RemoveEngineReplacementForCompany | ( | Company * | c,
|  | EngineID | engine,
|  | GroupID | group,
|  | DoCommandFlag | flags |
| ) |  |  | `[inline, static]`

Remove an engine replacement for the company.

Parameters:

  | c | Company.
  | engine | The original engine type.
  | group | The group related to this replacement.
  | flags | The calling command flags.

Returns:
  0 on success, CMD_ERROR on failure.

Definition at line 114 of file autoreplace_func.h.

References Company::engine_renew_list, and RemoveEngineReplacement().

Referenced by CmdDeleteGroup(), and CmdSetAutoReplace().