OpenTTD Source  20240917-master-g9ab0a47812
newgrf_engine.h File Reference
#include "direction_type.h"
#include "newgrf_callbacks.h"
#include "newgrf_properties.h"
#include "vehicle_type.h"
#include "engine_type.h"
#include "gfx_type.h"
#include "newgrf_spritegroup.h"

Go to the source code of this file.

Data Structures

struct  VehicleScopeResolver
 Resolver for a vehicle scope. More...
 
struct  VehicleResolverObject
 Resolver for a vehicle (chain) More...
 

Macros

#define GetCustomVehicleSprite(v, direction, image_type, result)   GetCustomEngineSprite(v->engine_type, v, direction, image_type, result)
 
#define GetCustomVehicleIcon(et, direction, image_type, result)   GetCustomEngineSprite(et, nullptr, direction, image_type, result)
 
#define GetCustomRotorSprite(v, image_type, result)   GetRotorOverrideSprite(v->engine_type, v, image_type, result)
 
#define GetCustomRotorIcon(et, image_type, result)   GetRotorOverrideSprite(et, nullptr, image_type, result)
 

Enumerations

enum  BuildProbabilityType { Reversed = 0 }
 
enum  VehicleTrigger {
  VEHICLE_TRIGGER_NEW_CARGO = 0x01, VEHICLE_TRIGGER_DEPOT = 0x02, VEHICLE_TRIGGER_EMPTY = 0x04, VEHICLE_TRIGGER_ANY_NEW_CARGO = 0x08,
  VEHICLE_TRIGGER_CALLBACK_32 = 0x10
}
 

Functions

void SetWagonOverrideSprites (EngineID engine, CargoID cargo, const struct SpriteGroup *group, std::span< EngineID > engine_ids)
 
const SpriteGroupGetWagonOverrideSpriteSet (EngineID engine, CargoID cargo, EngineID overriding_engine)
 
void SetCustomEngineSprites (EngineID engine, uint8_t cargo, const struct SpriteGroup *group)
 
void GetCustomEngineSprite (EngineID engine, const Vehicle *v, Direction direction, EngineImageType image_type, VehicleSpriteSeq *result)
 
void GetRotorOverrideSprite (EngineID engine, const struct Aircraft *v, EngineImageType image_type, VehicleSpriteSeq *result)
 
void SetEngineGRF (EngineID engine, const struct GRFFile *file)
 
uint16_t GetVehicleCallback (CallbackID callback, uint32_t param1, uint32_t param2, EngineID engine, const Vehicle *v)
 Evaluate a newgrf callback for vehicles. More...
 
uint16_t GetVehicleCallbackParent (CallbackID callback, uint32_t param1, uint32_t param2, EngineID engine, const Vehicle *v, const Vehicle *parent)
 Evaluate a newgrf callback for vehicles with a different vehicle for parent scope. More...
 
bool UsesWagonOverride (const Vehicle *v)
 Check if a wagon is currently using a wagon override. More...
 
int GetVehicleProperty (const Vehicle *v, PropertyID property, int orig_value, bool is_signed=false)
 
int GetEngineProperty (EngineID engine, PropertyID property, int orig_value, const Vehicle *v=nullptr, bool is_signed=false)
 
bool TestVehicleBuildProbability (Vehicle *v, EngineID engine, BuildProbabilityType type)
 Test for vehicle build probablity type. More...
 
void TriggerVehicle (Vehicle *veh, VehicleTrigger trigger)
 
void AlterVehicleListOrder (EngineID engine, uint target)
 Record a vehicle ListOrderChange. More...
 
void CommitVehicleListOrderChanges ()
 Deternine default engine sorting and execute recorded ListOrderChanges from AlterVehicleListOrder.
 
EngineID GetNewEngineID (const GRFFile *file, VehicleType type, uint16_t internal_id)
 Return the ID of a new engine. More...
 
void FillNewGRFVehicleCache (const Vehicle *v)
 Fill the grf_cache of the given vehicle. More...
 

Variables

static const uint TRAININFO_DEFAULT_VEHICLE_WIDTH = 29
 
static const uint ROADVEHINFO_DEFAULT_VEHICLE_WIDTH = 32
 
static const uint VEHICLEINFO_FULL_VEHICLE_WIDTH = 32
 

Detailed Description

Functions for NewGRF engines.

Definition in file newgrf_engine.h.

Function Documentation

◆ AlterVehicleListOrder()

void AlterVehicleListOrder ( EngineID  engine,
uint  target 
)

Record a vehicle ListOrderChange.

Parameters
engineEngine to move
targetLocal engine ID to move engine in front of
Note
All sorting is done later in CommitVehicleListOrderChanges

Definition at line 1299 of file newgrf_engine.cpp.

◆ FillNewGRFVehicleCache()

◆ GetNewEngineID()

EngineID GetNewEngineID ( const GRFFile file,
VehicleType  type,
uint16_t  internal_id 
)

Return the ID of a new engine.

Parameters
fileThe NewGRF file providing the engine.
typeThe Vehicle type.
internal_idNewGRF-internal ID of the engine.
Returns
The new EngineID.
Note
depending on the dynamic_engine setting and a possible override property the grfID may be unique or overwriting or partially re-defining properties of an existing engine.

Definition at line 703 of file newgrf.cpp.

◆ GetVehicleCallback()

uint16_t GetVehicleCallback ( CallbackID  callback,
uint32_t  param1,
uint32_t  param2,
EngineID  engine,
const Vehicle v 
)

Evaluate a newgrf callback for vehicles.

Parameters
callbackThe callback to evaluate
param1First parameter of the callback
param2Second parameter of the callback
engineEngine type of the vehicle to evaluate the callback for
vThe vehicle to evaluate the callback for, or nullptr if it doesn't exist yet
Returns
The value the callback returned, or CALLBACK_FAILED if it failed

Definition at line 1149 of file newgrf_engine.cpp.

◆ GetVehicleCallbackParent()

uint16_t GetVehicleCallbackParent ( CallbackID  callback,
uint32_t  param1,
uint32_t  param2,
EngineID  engine,
const Vehicle v,
const Vehicle parent 
)

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

Parameters
callbackThe callback to evaluate
param1First parameter of the callback
param2Second parameter of the callback
engineEngine type of the vehicle to evaluate the callback for
vThe vehicle to evaluate the callback for, or nullptr if it doesn't exist yet
parentThe vehicle to use for parent scope
Returns
The value the callback returned, or CALLBACK_FAILED if it failed

Definition at line 1165 of file newgrf_engine.cpp.

◆ TestVehicleBuildProbability()

bool TestVehicleBuildProbability ( Vehicle v,
EngineID  engine,
BuildProbabilityType  type 
)

Test for vehicle build probablity type.

Parameters
vVehicle whose build probability to test.
typeBuild probability type to test for.
Returns
True iff the probability result says so.

Definition at line 1201 of file newgrf_engine.cpp.

◆ UsesWagonOverride()

bool UsesWagonOverride ( const Vehicle v)

Check if a wagon is currently using a wagon override.

Parameters
vThe wagon to check
Returns
true if it is using an override, false otherwise

Definition at line 1134 of file newgrf_engine.cpp.

References SpecializedVehicle< Train, Type >::From(), BaseVehicle::type, and VEH_TRAIN.