# newgrf_engine.cpp File Reference

NewGRF handling of engines. More...

`#include "stdafx.h"`
`#include "debug.h"`
`#include "train.h"`
`#include "company_func.h"`
`#include "newgrf_engine.h"`
`#include "newgrf_spritegroup.h"`
`#include "date_func.h"`
`#include "vehicle_func.h"`
`#include "core/random_func.hpp"`
`#include "aircraft.h"`
`#include "core/smallmap_type.hpp"`
`#include "settings_type.h"`

Go to the source code of this file.

## Data Structures
struct | WagonOverride
struct | ListOrderChange
## Enumerations
enum | { AMS_TTDP_HANGAR, AMS_TTDP_TO_HANGAR, AMS_TTDP_TO_PAD1, AMS_TTDP_TO_PAD2, AMS_TTDP_TO_PAD3, AMS_TTDP_TO_ENTRY_2_AND_3, AMS_TTDP_TO_ENTRY_2_AND_3_AND_H, AMS_TTDP_TO_JUNCTION, AMS_TTDP_LEAVE_RUNWAY, AMS_TTDP_TO_INWAY, AMS_TTDP_TO_RUNWAY, AMS_TTDP_TO_OUTWAY, AMS_TTDP_WAITING, AMS_TTDP_TAKEOFF, AMS_TTDP_TO_TAKEOFF, AMS_TTDP_CLIMBING, AMS_TTDP_FLIGHT_APPROACH, AMS_TTDP_UNUSED_0x11, AMS_TTDP_FLIGHT_TO_TOWER, AMS_TTDP_UNUSED_0x13, AMS_TTDP_FLIGHT_FINAL, AMS_TTDP_FLIGHT_DESCENT, AMS_TTDP_BRAKING, AMS_TTDP_HELI_TAKEOFF_AIRPORT, AMS_TTDP_HELI_TO_TAKEOFF_AIRPORT, AMS_TTDP_HELI_LAND_AIRPORT, AMS_TTDP_HELI_TAKEOFF_HELIPORT, AMS_TTDP_HELI_TO_TAKEOFF_HELIPORT, AMS_TTDP_HELI_LAND_HELIPORT }
enum | { AMA_TTDP_IN_HANGAR, AMA_TTDP_ON_PAD1, AMA_TTDP_ON_PAD2, AMA_TTDP_ON_PAD3, AMA_TTDP_HANGAR_TO_PAD1, AMA_TTDP_HANGAR_TO_PAD2, AMA_TTDP_HANGAR_TO_PAD3, AMA_TTDP_LANDING_TO_PAD1, AMA_TTDP_LANDING_TO_PAD2, AMA_TTDP_LANDING_TO_PAD3, AMA_TTDP_PAD1_TO_HANGAR, AMA_TTDP_PAD2_TO_HANGAR, AMA_TTDP_PAD3_TO_HANGAR, AMA_TTDP_PAD1_TO_TAKEOFF, AMA_TTDP_PAD2_TO_TAKEOFF, AMA_TTDP_PAD3_TO_TAKEOFF, AMA_TTDP_HANGAR_TO_TAKOFF, AMA_TTDP_LANDING_TO_HANGAR, AMA_TTDP_IN_FLIGHT }
enum | { ATP_TTDP_SMALL, ATP_TTDP_LARGE, ATP_TTDP_HELIPORT, ATP_TTDP_OILRIG }
## Functions
void | SetWagonOverrideSprites (EngineID engine, CargoID cargo, const SpriteGroup *group, EngineID *train_id, uint trains)
const SpriteGroup * | GetWagonOverrideSpriteSet (EngineID engine, CargoID cargo, EngineID overriding_engine)
void | UnloadWagonOverrides (Engine *e)
| Unload all wagon override sprite groups.
void | SetCustomEngineSprites (EngineID engine, byte cargo, const SpriteGroup *group)
void | SetEngineGRF (EngineID engine, const GRFFile *file)
| Tie a GRFFile entry to an engine, to allow us to retrieve GRF parameters etc during a game.
const GRFFile * | GetEngineGRF (EngineID engine)
| Retrieve the GRFFile tied to an engine.
uint32 | GetEngineGRFID (EngineID engine)
| Retrieve the GRF ID of the GRFFile tied to an engine.
static int | MapOldSubType (const Vehicle *v)
static byte | MapAircraftMovementState (const Vehicle *v)
| Map OTTD aircraft movement states to TTDPatch style movement states (VarAction 2 Variable 0xE2).
static byte | MapAircraftMovementAction (const Vehicle *v)
| Map OTTD aircraft movement states to TTDPatch style movement actions (VarAction 2 Variable 0xE6) This is not fully supported yet but it's enough for Planeset.
static const Vehicle * | GRV (const ResolverObject *object)
static uint32 | VehicleGetRandomBits (const ResolverObject *object)
static uint32 | VehicleGetTriggers (const ResolverObject *object)
static void | VehicleSetTriggers (const ResolverObject *object, int triggers)
static uint8 | LiveryHelper (EngineID engine, const Vehicle *v)
static uint32 | PositionHelper (const Vehicle *v, bool consecutive)
| Helper to get the position of a vehicle within a chain of vehicles.
static uint32 | VehicleGetVariable (const ResolverObject *object, byte variable, byte parameter, bool *available)
static const SpriteGroup * | VehicleResolveReal (const ResolverObject *object, const SpriteGroup *group)
static void | NewVehicleResolver (ResolverObject *res, EngineID engine_type, const Vehicle *v)
static const SpriteGroup * | GetVehicleSpriteGroup (EngineID engine, const Vehicle *v, bool use_cache=true)
| Retrieve the SpriteGroup for the specified vehicle.
SpriteID | GetCustomEngineSprite (EngineID engine, const Vehicle *v, Direction direction)
SpriteID | GetRotorOverrideSprite (EngineID engine, const Vehicle *v, bool info_view)
bool | UsesWagonOverride (const Vehicle *v)
| Check if a wagon is currently using a wagon override.
uint16 | GetVehicleCallback (CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v)
| Evaluate a newgrf callback for vehicles.
uint16 | GetVehicleCallbackParent (CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v, const Vehicle *parent)
| Evaluate a newgrf callback for vehicles with a different vehicle for parent scope.
uint | GetVehicleProperty (const Vehicle *v, uint8 property, uint orig_value)
uint | GetEngineProperty (EngineID engine, uint8 property, uint orig_value)
static void | DoTriggerVehicle (Vehicle *v, VehicleTrigger trigger, byte base_random_bits, bool first)
void | TriggerVehicle (Vehicle *v, VehicleTrigger trigger)
uint | ListPositionOfEngine (EngineID engine)
| Get the list position of an engine.
void | AlterVehicleListOrder (EngineID engine, EngineID target)
void | CommitVehicleListOrderChanges ()
## Variables
int | _traininfo_vehicle_pitch = 0
int | _traininfo_vehicle_width = 29
static SmallVector < ListOrderChange, 16 > | _list_order_changes

## Detailed Description

NewGRF handling of engines.

Definition in file newgrf_engine.cpp.

## Function Documentation

const GRFFile* GetEngineGRF | ( | EngineID | engine | ) | `[read]`

Retrieve the GRFFile tied to an engine.

Parameters:

  | engine | Engine ID to retrieve.

Returns:
  Pointer to GRFFile.

Definition at line 112 of file newgrf_engine.cpp.

Referenced by GetEngineGRFID(), GetIntersectionOfArticulatedRefitMasks(), GetUnionOfArticulatedRefitMasks(), and IsArticulatedVehicleRefittable().

uint32 GetEngineGRFID | ( | EngineID | engine | ) |

Retrieve the GRF ID of the GRFFile tied to an engine.

Parameters:

  | engine | Engine ID to retrieve.

Returns:
  32 bit GRFID value.

Definition at line 123 of file newgrf_engine.cpp.

References GetEngineGRF().

Referenced by CmdMoveRailVehicle(), CmdStartStopVehicle(), DrawVehicleRefitWindow(), GetCargoSubtypeText(), and ShowAdditionalText().

uint16 GetVehicleCallback | ( | CallbackID | callback,
|  | uint32 | param1,
|  | uint32 | param2,
|  | EngineID | engine,
|  | const Vehicle * | v |
| ) |  |  |

Evaluate a newgrf callback for vehicles.

Parameters:

  | callback | The callback to evalute
  | param1 | First parameter of the callback
  | param2 | Second parameter of the callback
  | engine | Engine type of the vehicle to evaluate the callback for
  | v | The vehicle to evaluate the callback for, or NULL if it doesnt exist yet

Returns:
  The value the callback returned, or CALLBACK_FAILED if it failed

Definition at line 962 of file newgrf_engine.cpp.

References CALLBACK_FAILED, and GetVehicleSpriteGroup().

Referenced by CmdBuildAircraft(), CmdRefitAircraft(), CmdRefitRailVehicle(), CmdRefitRoadVeh(), CmdRefitShip(), CmdStartStopVehicle(), GetCargoSubtypeText(), GetIntersectionOfArticulatedRefitMasks(), GetUnionOfArticulatedRefitMasks(), IsArticulatedVehicleRefittable(), LoadUnloadVehicle(), ShowAdditionalText(), and TrainConsistChanged().

uint16 GetVehicleCallbackParent | ( | CallbackID | callback,
|  | uint32 | param1,
|  | uint32 | param2,
|  | EngineID | engine,
|  | const Vehicle * | v,
|  | const Vehicle * | parent |
| ) |  |  |

Evaluate a newgrf callback for vehicles with a different vehicle for parent scope.

Parameters:

  | callback | The callback to evalute
  | param1 | First parameter of the callback
  | param2 | Second parameter of the callback
  | engine | Engine type of the vehicle to evaluate the callback for
  | v | The vehicle to evaluate the callback for, or NULL if it doesnt exist yet
  | parent | The vehicle to use for parent scope

Returns:
  The value the callback returned, or CALLBACK_FAILED if it failed

Definition at line 989 of file newgrf_engine.cpp.

References CALLBACK_FAILED, and GetVehicleSpriteGroup().

Referenced by CmdMoveRailVehicle().

static const SpriteGroup* GetVehicleSpriteGroup | ( | EngineID | engine,
|  | const Vehicle * | v,
|  | bool | use_cache = `true` |
| ) |  |  | `[static]`

Retrieve the SpriteGroup for the specified vehicle.

If the vehicle is not specified, the purchase list group for the engine is chosen. For trains, an additional engine override lookup is performed.

Parameters:

  | engine | Engine type of the vehicle.
  | v | The vehicle itself.
  | use_cache | Use cached override

Returns:
  The selected SpriteGroup for the vehicle.

Definition at line 870 of file newgrf_engine.cpp.

References lengthof.

Referenced by GetVehicleCallback(), and GetVehicleCallbackParent().

uint ListPositionOfEngine | ( | EngineID | engine | ) |

Get the list position of an engine.

Used when sorting a list of engines.

Parameters:

  | engine | ID of the engine.

Returns:
  The list position of the engine.

Definition at line 1110 of file newgrf_engine.cpp.

static uint32 PositionHelper | ( | const Vehicle * | v,
|  | bool | consecutive |
| ) |  |  | `[static]`

Helper to get the position of a vehicle within a chain of vehicles.

Parameters:

  | v | the vehicle to get the position of.
  | consecutive | whether to look at the whole chain or the vehicles with the same 'engine type'.

Returns:
  the position in the chain from front and tail and chain length.

Definition at line 453 of file newgrf_engine.cpp.

void SetEngineGRF | ( | EngineID | engine,
|  | const GRFFile * | file |
| ) |  |  |

Tie a GRFFile entry to an engine, to allow us to retrieve GRF parameters etc during a game.

Parameters:

  | engine | Engine ID to tie the GRFFile to.
  | file | Pointer of GRFFile to tie.

Definition at line 100 of file newgrf_engine.cpp.

bool UsesWagonOverride | ( | const Vehicle * | v | ) |

Check if a wagon is currently using a wagon override.

Parameters:

  | v | The wagon to check

Returns:
  true if it is using an override, false otherwise

Definition at line 947 of file newgrf_engine.cpp.

Referenced by TrainConsistChanged().