OpenTTD
|
NewGRF handling of engines. More...
#include "stdafx.h"
#include "debug.h"
#include "train.h"
#include "roadveh.h"
#include "company_func.h"
#include "newgrf_cargo.h"
#include "newgrf_spritegroup.h"
#include "date_func.h"
#include "vehicle_func.h"
#include "core/random_func.hpp"
#include "aircraft.h"
#include "station_base.h"
#include "company_base.h"
#include "newgrf_railtype.h"
#include "ship.h"
#include "safeguards.h"
Go to the source code of this file.
Data Structures | |
struct | WagonOverride |
struct | ListOrderChange |
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. | |
static int | MapOldSubType (const Vehicle *v) |
static byte | MapAircraftMovementState (const Aircraft *v) |
Map OTTD aircraft movement states to TTDPatch style movement states (VarAction 2 Variable 0xE2) | |
static byte | MapAircraftMovementAction (const Aircraft *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 Livery * | LiveryHelper (EngineID engine, const Vehicle *v) |
Determines the livery of an engine. | |
static uint32 | PositionHelper (const Vehicle *v, bool consecutive) |
Helper to get the position of a vehicle within a chain of vehicles. | |
static uint32 | VehicleGetVariable (Vehicle *v, const VehicleScopeResolver *object, byte variable, uint32 parameter, bool *available) |
static const GRFFile * | GetEngineGrfFile (EngineID engine_type) |
Get the grf file associated with an engine type. | |
void | GetCustomEngineSprite (EngineID engine, const Vehicle *v, Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) |
void | GetRotorOverrideSprite (EngineID engine, const struct Aircraft *v, bool info_view, EngineImageType image_type, VehicleSpriteSeq *result) |
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, PropertyID property, uint orig_value) |
uint | GetEngineProperty (EngineID engine, PropertyID property, uint orig_value, const Vehicle *v) |
static void | DoTriggerVehicle (Vehicle *v, VehicleTrigger trigger, byte base_random_bits, bool first) |
void | TriggerVehicle (Vehicle *v, VehicleTrigger trigger) |
void | AlterVehicleListOrder (EngineID engine, uint target) |
Record a vehicle ListOrderChange. | |
static int CDECL | EnginePreSort (const EngineID *a, const EngineID *b) |
Comparator function to sort engines via scope-GRFID and local ID. | |
void | CommitVehicleListOrderChanges () |
Deternine default engine sorting and execute recorded ListOrderChanges from AlterVehicleListOrder. | |
void | FillNewGRFVehicleCache (const Vehicle *v) |
Fill the grf_cache of the given vehicle. |
Variables | |
static SmallVector < ListOrderChange, 16 > | _list_order_changes |
NewGRF handling of engines.
Definition in file newgrf_engine.cpp.
void AlterVehicleListOrder | ( | EngineID | engine, |
uint | target | ||
) |
Record a vehicle ListOrderChange.
engine | Engine to move |
target | Local engine ID to move engine in front of |
Definition at line 1221 of file newgrf_engine.cpp.
References SmallVector< T, S >::Append(), and ListOrderChange::target.
Referenced by AircraftVehicleChangeInfo(), RailVehicleChangeInfo(), RoadVehicleChangeInfo(), and ShipVehicleChangeInfo().
Comparator function to sort engines via scope-GRFID and local ID.
a | left side |
b | right side |
Definition at line 1235 of file newgrf_engine.cpp.
References SmallVector< T, S >::Get(), EngineIDMapping::grfid, EngineIDMapping::internal_id, and EngineIDMapping::type.
Referenced by CommitVehicleListOrderChanges().
void FillNewGRFVehicleCache | ( | const Vehicle * | v | ) |
Fill the grf_cache of the given vehicle.
v | The vehicle to fill the cache for. |
Definition at line 1307 of file newgrf_engine.cpp.
References NewGRFCache::cache_valid, Vehicle::engine_type, VehicleResolverObject::GetScope(), ScopeResolver::GetVariable(), Vehicle::grf_cache, HasBit(), lengthof, NCVV_COMPANY_INFORMATION, NCVV_CONSIST_CARGO_INFORMATION, NCVV_END, NCVV_POSITION_CONSIST_LENGTH, NCVV_POSITION_IN_VEHICLE, NCVV_POSITION_SAME_ID_LENGTH, VSG_SCOPE_SELF, and VehicleResolverObject::WO_NONE.
Referenced by CheckCaches().
Get the grf file associated with an engine type.
engine_type | Engine to query. |
Definition at line 975 of file newgrf_engine.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), and Engine::GetGRF().
uint16 GetVehicleCallback | ( | CallbackID | callback, |
uint32 | param1, | ||
uint32 | param2, | ||
EngineID | engine, | ||
const Vehicle * | v | ||
) |
Evaluate a newgrf callback for vehicles.
callback | The callback to evaluate |
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 |
Definition at line 1097 of file newgrf_engine.cpp.
References VehicleResolverObject::WO_UNCACHED.
Referenced by CmdStartStopVehicle(), Train::ConsistChanged(), Engine::DetermineCapacity(), GetCargoSubtypeText(), GetLoadAmount(), GetNextArticulatedPart(), GetRefitCostFactor(), GetRoadVehLength(), PlayVehicleSound(), RunVehicleDayProc(), ShowAdditionalText(), SpawnAdvancedVisualEffect(), and Vehicle::UpdateVisualEffect().
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.
callback | The callback to evaluate |
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 doesn't exist yet |
parent | The vehicle to use for parent scope |
Definition at line 1113 of file newgrf_engine.cpp.
References VehicleResolverObject::WO_NONE.
Referenced by CheckTrainAttachment().
Determines the livery of an engine.
This always uses dual company colours independent of GUI settings. So it is desync-safe.
Definition at line 421 of file newgrf_engine.cpp.
References _current_company, Vehicle::engine_type, GroundVehicleCache::first_engine, GetEngineLivery(), Vehicle::GetGroundVehicleCache(), INVALID_ENGINE, Vehicle::IsGroundVehicle(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), LIT_ALL, and Vehicle::owner.
Referenced by VehicleScopeResolver::GetVariable().
|
static |
Helper to get the position of a vehicle within a chain of vehicles.
v | the vehicle to get the position of. |
consecutive | whether to look at the whole chain or the vehicles with the same 'engine type'. |
Definition at line 444 of file newgrf_engine.cpp.
References Vehicle::engine_type, Vehicle::First(), and Vehicle::Next().
Tie a GRFFile entry to an engine, to allow us to retrieve GRF parameters etc during a game.
Definition at line 104 of file newgrf_engine.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Engine::grf_prop, and GRFFilePropsBase< Tcnt >::grffile.
bool UsesWagonOverride | ( | const Vehicle * | v | ) |
Check if a wagon is currently using a wagon override.
v | The wagon to check |
Definition at line 1082 of file newgrf_engine.cpp.
References SpecializedVehicle< Train, Type >::From(), BaseVehicle::type, and VEH_TRAIN.
Referenced by Train::ConsistChanged(), and GetEngineLiveryScheme().