OpenTTD
|
Vehicle data structure. More...
#include <vehicle_base.h>
Public Member Functions | |
Vehicle (VehicleType type=VEH_INVALID) | |
Vehicle constructor. More... | |
void | PreDestructor () |
Destroy all stuff that (still) needs the virtual functions to work properly. | |
virtual | ~Vehicle () |
We want to 'destruct' the right class. More... | |
void | BeginLoading () |
Prepare everything to begin the loading when arriving at a station. More... | |
void | CancelReservation (StationID next, Station *st) |
Return all reserved cargo packets to the station and reset all packets staged for transfer. More... | |
void | LeaveStation () |
Perform all actions when leaving a station. More... | |
GroundVehicleCache * | GetGroundVehicleCache () |
Access the ground vehicle cache of the vehicle. More... | |
const GroundVehicleCache * | GetGroundVehicleCache () const |
Access the ground vehicle cache of the vehicle. More... | |
uint16 & | GetGroundVehicleFlags () |
Access the ground vehicle flags of the vehicle. More... | |
const uint16 & | GetGroundVehicleFlags () const |
Access the ground vehicle flags of the vehicle. More... | |
void | DeleteUnreachedImplicitOrders () |
Delete all implicit orders which were not reached. | |
void | HandleLoading (bool mode=false) |
Handle the loading of the vehicle; when not it skips through dummy orders and does nothing in all other cases. More... | |
void | GetConsistFreeCapacities (SmallMap< CargoID, uint > &capacities) const |
Get a map of cargoes and free capacities in the consist. More... | |
uint | GetConsistTotalCapacity () const |
virtual void | MarkDirty () |
Marks the vehicles to be redrawn and updates cached variables. More... | |
virtual void | UpdateDeltaXY (Direction direction) |
Updates the x and y offsets and the size of the sprite used for this vehicle. More... | |
uint | GetOldAdvanceSpeed (uint speed) |
Determines the effective direction-specific vehicle movement speed. More... | |
uint | GetAdvanceDistance () |
Determines the vehicle "progress" needed for moving a step. More... | |
virtual ExpensesType | GetExpenseType (bool income) const |
Sets the expense type associated to this vehicle type. More... | |
virtual void | PlayLeaveStationSound () const |
Play the sound associated with leaving the station. | |
virtual bool | IsPrimaryVehicle () const |
Whether this is the primary vehicle in the chain. | |
const Engine * | GetEngine () const |
Retrieves the engine of the vehicle. More... | |
virtual void | GetImage (Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const |
Gets the sprite to show for the given direction. More... | |
const GRFFile * | GetGRF () const |
Retrieve the NewGRF the vehicle is tied to. More... | |
uint32 | GetGRFID () const |
Retrieve the GRF ID of the NewGRF the vehicle is tied to. More... | |
void | InvalidateNewGRFCache () |
Invalidates cached NewGRF variables. More... | |
void | InvalidateNewGRFCacheOfChain () |
Invalidates cached NewGRF variables of all vehicles in the chain (after the current vehicle) More... | |
bool | IsGroundVehicle () const |
Check if the vehicle is a ground vehicle. More... | |
virtual int | GetDisplaySpeed () const |
Gets the speed in km-ish/h that can be sent into SetDParam for string processing. More... | |
virtual int | GetDisplayMaxSpeed () const |
Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing. More... | |
virtual int | GetCurrentMaxSpeed () const |
Calculates the maximum speed of the vehicle under its current conditions. More... | |
virtual Money | GetRunningCost () const |
Gets the running cost of a vehicle. More... | |
virtual bool | IsInDepot () const |
Check whether the vehicle is in the depot. More... | |
virtual bool | IsChainInDepot () const |
Check whether the whole vehicle chain is in the depot. More... | |
bool | IsStoppedInDepot () const |
Check whether the vehicle is in the depot and stopped. More... | |
virtual bool | Tick () |
Calls the tick handler of the vehicle. More... | |
virtual void | OnNewDay () |
Calls the new day handler of the vehicle. | |
virtual uint | Crash (bool flooded=false) |
Crash the (whole) vehicle chain. More... | |
virtual Trackdir | GetVehicleTrackdir () const |
Returns the Trackdir on which the vehicle is currently located. More... | |
Money | GetDisplayRunningCost () const |
Gets the running cost of a vehicle that can be sent into SetDParam for string processing. More... | |
Money | GetDisplayProfitThisYear () const |
Gets the profit vehicle had this year. More... | |
Money | GetDisplayProfitLastYear () const |
Gets the profit vehicle had last year. More... | |
void | SetNext (Vehicle *next) |
Set the next vehicle of this vehicle. More... | |
Vehicle * | Next () const |
Get the next vehicle of this vehicle. More... | |
Vehicle * | Previous () const |
Get the previous vehicle of this vehicle. More... | |
Vehicle * | First () const |
Get the first vehicle of this vehicle chain. More... | |
Vehicle * | Last () |
Get the last vehicle of this vehicle chain. More... | |
const Vehicle * | Last () const |
Get the last vehicle of this vehicle chain. More... | |
Vehicle * | Move (int n) |
Get the vehicle at offset n of this vehicle chain. More... | |
const Vehicle * | Move (int n) const |
Get the vehicle at offset n of this vehicle chain. More... | |
Order * | GetFirstOrder () const |
Get the first order of the vehicles order list. More... | |
void | AddToShared (Vehicle *shared_chain) |
Adds this vehicle to a shared vehicle chain. More... | |
void | RemoveFromShared () |
Removes the vehicle from the shared order list. | |
Vehicle * | NextShared () const |
Get the next vehicle of the shared vehicle chain. More... | |
Vehicle * | PreviousShared () const |
Get the previous vehicle of the shared vehicle chain. More... | |
Vehicle * | FirstShared () const |
Get the first vehicle of this vehicle chain. More... | |
bool | IsOrderListShared () const |
Check if we share our orders with another vehicle. More... | |
VehicleOrderID | GetNumOrders () const |
Get the number of orders this vehicle has. More... | |
VehicleOrderID | GetNumManualOrders () const |
Get the number of manually added orders this vehicle has. More... | |
StationIDStack | GetNextStoppingStation () const |
Get the next station the vehicle will stop at. More... | |
void | ResetRefitCaps () |
Reset all refit_cap in the consist to cargo_cap. | |
void | CopyVehicleConfigAndStatistics (const Vehicle *src) |
Copy certain configurations and statistics of a vehicle after successful autoreplace/renew The function shall copy everything that cannot be copied by a command (like orders / group etc), and that shall not be resetted for the new vehicle. More... | |
bool | HandleBreakdown () |
Handle all of the aspects of a vehicle breakdown This includes adding smoke and sounds, and ending the breakdown when appropriate. More... | |
bool | NeedsAutorenewing (const Company *c, bool use_renew_setting=true) const |
Function to tell if a vehicle needs to be autorenewed. More... | |
bool | NeedsServicing () const |
Check if the vehicle needs to go to a depot in near future (if a opportunity presents itself) for service or replacement. More... | |
bool | NeedsAutomaticServicing () const |
Checks if the current order should be interrupted for a service-in-depot order. More... | |
virtual TileIndex | GetOrderStationLocation (StationID station) |
Determine the location for the station where the vehicle goes to next. More... | |
virtual bool | FindClosestDepot (TileIndex *location, DestinationID *destination, bool *reverse) |
Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should reverse. More... | |
CommandCost | SendToDepot (DoCommandFlag flags, DepotCommand command) |
Send this vehicle to the depot using the given command(s). More... | |
void | UpdateVisualEffect (bool allow_power_change=true) |
Update the cached visual effect. More... | |
void | ShowVisualEffect () const |
Draw visual effects (smoke and/or sparks) for a vehicle chain. More... | |
void | UpdatePosition () |
Update the position of the vehicle. More... | |
void | UpdateViewport (bool dirty) |
Update the vehicle on the viewport, updating the right hash and setting the new coordinates. More... | |
void | UpdatePositionAndViewport () |
Update the position of the vehicle, and update the viewport. | |
void | MarkAllViewportsDirty () const |
Marks viewports dirty where the vehicle's image is. | |
uint16 | GetServiceInterval () const |
void | SetServiceInterval (uint16 interval) |
bool | ServiceIntervalIsCustom () const |
bool | ServiceIntervalIsPercent () const |
void | SetServiceIntervalIsCustom (bool on) |
void | SetServiceIntervalIsPercent (bool on) |
void | IncrementImplicitOrderIndex () |
Increments cur_implicit_order_index, keeps care of the wrap-around and invalidates the GUI. More... | |
void | IncrementRealOrderIndex () |
Advanced cur_real_order_index to the next real order, keeps care of the wrap-around and invalidates the GUI. More... | |
void | UpdateRealOrderIndex () |
Skip implicit orders until cur_real_order_index is a non-implicit order. | |
Order * | GetOrder (int index) const |
Returns order 'index' of a vehicle or NULL when it doesn't exists. More... | |
Order * | GetLastOrder () const |
Returns the last order of a vehicle, or NULL if it doesn't exists. More... | |
bool | IsEngineCountable () const |
Check if a vehicle is counted in num_engines in each company struct. More... | |
bool | HasEngineType () const |
Check whether Vehicle::engine_type has any meaning. More... | |
bool | HasDepotOrder () const |
Checks if a vehicle has a depot in its order list. More... | |
void | HandlePathfindingResult (bool path_found) |
Handle the pathfinding result, especially the lost status. More... | |
bool | IsFrontEngine () const |
Check if the vehicle is a front engine. More... | |
bool | IsArticulatedPart () const |
Check if the vehicle is an articulated part of an engine. More... | |
bool | HasArticulatedPart () const |
Check if an engine has an articulated part. More... | |
Vehicle * | GetNextArticulatedPart () const |
Get the next part of an articulated engine. More... | |
Vehicle * | GetFirstEnginePart () |
Get the first part of an articulated engine. More... | |
const Vehicle * | GetFirstEnginePart () const |
Get the first part of an articulated engine. More... | |
Vehicle * | GetLastEnginePart () |
Get the last part of an articulated engine. More... | |
Vehicle * | GetNextVehicle () const |
Get the next real (non-articulated part) vehicle in the consist. More... | |
Vehicle * | GetPrevVehicle () const |
Get the previous real (non-articulated part) vehicle in the consist. More... | |
![]() | |
void * | operator new (size_t size) |
Allocates space for new Titem. More... | |
void * | operator new (size_t size, size_t index) |
Allocates space for new Titem with given index. More... | |
void * | operator new (size_t size, void *ptr) |
Allocates space for new Titem at given memory address. More... | |
void | operator delete (void *p) |
Marks Titem as free. More... | |
![]() | |
void | CopyConsistPropertiesFrom (const BaseConsist *src) |
Copy properties of other BaseConsist. More... | |
Static Public Member Functions | |
static uint | GetAdvanceSpeed (uint speed) |
Determines the effective vehicle movement speed. More... | |
![]() | |
static bool | CanAllocateItem (size_t n=1) |
Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function() More... | |
static bool | CleaningPool () |
Returns current state of pool cleaning - yes or no. More... | |
static bool | IsValidID (size_t index) |
Tests whether given index can be used to get valid (non-NULL) Titem. More... | |
static Titem * | Get (size_t index) |
Returns Titem with given index. More... | |
static Titem * | GetIfValid (size_t index) |
Returns Titem with given index. More... | |
static size_t | GetPoolSize () |
Returns first unused index. More... | |
static size_t | GetNumItems () |
Returns number of valid items in the pool. More... | |
static void | PostDestructor (size_t index) |
Dummy function called after destructor of each member. More... | |
Data Fields | |
TileIndex | tile |
Current tile index. | |
TileIndex | dest_tile |
Heading for this tile. More... | |
Money | profit_this_year |
Profit this year << 8, low 8 bits are fract. | |
Money | profit_last_year |
Profit last year << 8, low 8 bits are fract. | |
Money | value |
Value of the vehicle. | |
CargoPayment * | cargo_payment |
The cargo payment we're currently in. | |
Rect | coord |
NOSAVE: Graphical bounding box of the vehicle, i.e. what to redraw on moves. | |
Vehicle * | hash_viewport_next |
NOSAVE: Next vehicle in the visual location hash. | |
Vehicle ** | hash_viewport_prev |
NOSAVE: Previous vehicle in the visual location hash. | |
Vehicle * | hash_tile_next |
NOSAVE: Next vehicle in the tile location hash. | |
Vehicle ** | hash_tile_prev |
NOSAVE: Previous vehicle in the tile location hash. | |
Vehicle ** | hash_tile_current |
NOSAVE: Cache of the current hash chain. | |
SpriteID | colourmap |
NOSAVE: cached colour mapping. | |
Year | build_year |
Year the vehicle has been built. | |
Date | age |
Age in days. | |
Date | max_age |
Maximum age. | |
Date | date_of_last_service |
Last date the vehicle had a service at a depot. | |
uint16 | reliability |
Reliability. | |
uint16 | reliability_spd_dec |
Reliability decrease speed. | |
byte | breakdown_ctr |
Counter for managing breakdown events. More... | |
byte | breakdown_delay |
Counter for managing breakdown length. | |
byte | breakdowns_since_last_service |
Counter for the amount of breakdowns. | |
byte | breakdown_chance |
Current chance of breakdowns. | |
int32 | x_pos |
x coordinate. | |
int32 | y_pos |
y coordinate. | |
int32 | z_pos |
z coordinate. | |
DirectionByte | direction |
facing | |
OwnerByte | owner |
Which company owns the vehicle? | |
byte | spritenum |
currently displayed sprite index 0xfd == custom sprite, 0xfe == custom second head sprite 0xff == reserved for another custom sprite | |
VehicleSpriteSeq | sprite_seq |
Vehicle appearance. | |
byte | x_extent |
x-extent of vehicle bounding box | |
byte | y_extent |
y-extent of vehicle bounding box | |
byte | z_extent |
z-extent of vehicle bounding box | |
int8 | x_bb_offs |
x offset of vehicle bounding box | |
int8 | y_bb_offs |
y offset of vehicle bounding box | |
int8 | x_offs |
x offset for vehicle sprite | |
int8 | y_offs |
y offset for vehicle sprite | |
EngineID | engine_type |
The type of engine used for this vehicle. | |
TextEffectID | fill_percent_te_id |
a text-effect id to a loading indicator object | |
UnitID | unitnumber |
unit number, for display purposes only | |
uint16 | cur_speed |
current speed | |
byte | subspeed |
fractional speed | |
byte | acceleration |
used by train & aircraft | |
uint32 | motion_counter |
counter to occasionally play a vehicle sound. | |
byte | progress |
The percentage (if divided by 256) this vehicle already crossed the tile unit. | |
byte | random_bits |
Bits used for determining which randomized variational spritegroups to use when drawing. | |
byte | waiting_triggers |
Triggers to be yet matched before rerandomizing the random bits. | |
StationID | last_station_visited |
The last station we stopped at. | |
StationID | last_loading_station |
Last station the vehicle has stopped at and could possibly leave from with any cargo loaded. | |
CargoID | cargo_type |
type of cargo this vehicle is carrying | |
byte | cargo_subtype |
Used for livery refits (NewGRF variations) | |
uint16 | cargo_cap |
total capacity | |
uint16 | refit_cap |
Capacity left over from before last refit. | |
VehicleCargoList | cargo |
The cargo this vehicle is carrying. | |
uint16 | cargo_age_counter |
Ticks till cargo is aged next. | |
int8 | trip_occupancy |
NOSAVE: Occupancy of vehicle of the current trip (updated after leaving a station). | |
byte | day_counter |
Increased by one for each day. | |
byte | tick_counter |
Increased by one for each tick. | |
byte | running_ticks |
Number of ticks this vehicle was not stopped this day. | |
byte | vehstatus |
Status. | |
Order | current_order |
The current order (+ status, like: loading) | |
union { | |
OrderList * list | |
Pointer to the order list for this vehicle. | |
Order * old | |
Only used during conversion of old save games. | |
} | orders |
The orders currently assigned to the vehicle. | |
uint16 | load_unload_ticks |
Ticks to wait before starting next cycle. | |
GroupID | group_id |
Index of group Pool array. | |
byte | subtype |
subtype (Filled with values from #EffectVehicles/#TrainSubTypes/#AircraftSubTypes) | |
NewGRFCache | grf_cache |
Cache of often used calculated NewGRF values. | |
VehicleCache | vcache |
Cache of often used vehicle values. | |
![]() | |
Tindex | index |
Index of this pool item. | |
![]() | |
VehicleTypeByte | type |
Type of vehicle. | |
![]() | |
char * | name |
Name of vehicle. | |
uint32 | current_order_time |
How many ticks have passed since this order started. | |
int32 | lateness_counter |
How many ticks late (or early if negative) this vehicle is. | |
Date | timetable_start |
When the vehicle is supposed to start the timetable. | |
uint16 | service_interval |
The interval for (automatic) servicing; either in days or %. | |
VehicleOrderID | cur_real_order_index |
The index to the current real (non-implicit) order. | |
VehicleOrderID | cur_implicit_order_index |
The index to the current implicit order. | |
uint16 | vehicle_flags |
Used for gradual loading and other miscellaneous things (. More... | |
Private Types | |
typedef std::list< RefitDesc > | RefitList |
typedef std::map< CargoID, uint > | CapacitiesMap |
Private Member Functions | |
void | SkipToNextRealOrderIndex () |
Advance cur_real_order_index to the next real order. More... | |
Private Attributes | |
Vehicle * | next |
pointer to the next vehicle in the chain | |
Vehicle * | previous |
NOSAVE: pointer to the previous vehicle in the chain. | |
Vehicle * | first |
NOSAVE: pointer to the first vehicle in the chain. | |
Vehicle * | next_shared |
pointer to the next vehicle that shares the order | |
Vehicle * | previous_shared |
NOSAVE: pointer to the previous vehicle in the shared order chain. | |
Friends | |
const SaveLoad * | GetVehicleDescription (VehicleType vt) |
So we can use private/protected variables in the saveload code. More... | |
void | FixOldVehicles () |
Convert the old style vehicles into something that resembles the old new style savegames. More... | |
void | AfterLoadVehicles (bool part_of_load) |
So we can set the previous and first pointers while loading. More... | |
bool | LoadOldVehicle (LoadgameState *ls, int num) |
So we can set the proper next pointer while loading. More... | |
Vehicle data structure.
Definition at line 212 of file vehicle_base.h.
Vehicle::Vehicle | ( | VehicleType | type = VEH_INVALID | ) |
Vehicle constructor.
type | Type of the new vehicle. |
Definition at line 345 of file vehicle.cpp.
References DEFAULT_GROUP, and INVALID_COORD.
|
virtual |
We want to 'destruct' the right class.
Definition at line 868 of file vehicle.cpp.
References MarkAllViewportsDirty(), and VS_HIDDEN.
void Vehicle::AddToShared | ( | Vehicle * | shared_chain | ) |
Adds this vehicle to a shared vehicle chain.
shared_chain | a vehicle of the chain with shared vehicles. |
Definition at line 2660 of file vehicle.cpp.
Referenced by CmdSellRailWagon().
void Vehicle::BeginLoading | ( | ) |
Prepare everything to begin the loading when arriving at a station.
Definition at line 2005 of file vehicle.cpp.
Referenced by TrainEnterStation().
void Vehicle::CancelReservation | ( | StationID | next, |
Station * | st | ||
) |
Return all reserved cargo packets to the station and reset all packets staged for transfer.
st | the station where the reserved packets should go. |
Definition at line 2135 of file vehicle.cpp.
References VehicleCargoList::ActionCount(), GoodsEntry::cargo, cargo, cargo_type, DEBUG, Station::goods, VehicleCargoList::KeepAll(), CargoList< VehicleCargoList, CargoPacketList >::MTA_LOAD, next, VehicleCargoList::Return(), VehicleCargoList::SetTransferLoadPlace(), and BaseStation::xy.
|
inline |
Copy certain configurations and statistics of a vehicle after successful autoreplace/renew The function shall copy everything that cannot be copied by a command (like orders / group etc), and that shall not be resetted for the new vehicle.
src | The old vehicle |
Definition at line 713 of file vehicle_base.h.
References current_order, dest_tile, profit_last_year, profit_this_year, and unitnumber.
Referenced by CmdSellRailWagon().
|
virtual |
Crash the (whole) vehicle chain.
flooded | whether the cause of the crash is flooding or not. |
Reimplemented in Train, RoadVehicle, Aircraft, GroundVehicle< T, Type >, GroundVehicle< Train, VEH_TRAIN >, and GroundVehicle< RoadVehicle, VEH_ROAD >.
Definition at line 260 of file vehicle.cpp.
Referenced by Aircraft::Crash(), and FloodVehicle().
|
inlinevirtual |
Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should reverse.
location | where do we go to? |
destination | what hangar do we go to? |
reverse | should the vehicle be reversed? |
Reimplemented in Train, RoadVehicle, Aircraft, and Ship.
Definition at line 751 of file vehicle_base.h.
References HasBit(), MarkAllViewportsDirty(), SB(), VF_SERVINT_IS_CUSTOM, and VF_SERVINT_IS_PERCENT.
Referenced by Train::IsInDepot().
|
inline |
Get the first vehicle of this vehicle chain.
Definition at line 595 of file vehicle_base.h.
Referenced by RefitWindow::BuildRefitList(), CmdRefitVehicle(), CmdSellVehicle(), NewGRFInspectWindow::DrawWidget(), FloodVehicleProc(), GetNewCargoTypeForReplace(), PositionHelper(), VehicleResolverObject::ResolveReal(), and VerifyAutoreplaceRefitForOrders().
|
inline |
Get the first vehicle of this vehicle chain.
Definition at line 676 of file vehicle_base.h.
Referenced by CheckOrders(), CmdAddSharedVehicleGroup(), CmdAutofillTimetable(), CmdMoveOrder(), DeleteOrder(), InsertOrder(), OrderBackup::OrderBackup(), and OrdersWindow::OrderClick_StopSharing().
|
inline |
Determines the vehicle "progress" needed for moving a step.
Together with GetAdvanceSpeed() this function is a replacement for GetOldAdvanceSpeed().
Definition at line 415 of file vehicle_base.h.
|
inlinestatic |
Determines the effective vehicle movement speed.
Together with GetAdvanceDistance() this function is a replacement for GetOldAdvanceSpeed().
A vehicle progresses independent of it's movement direction. However different amounts of "progress" are needed for moving a step in a specific direction. That way the leftover progress does not need any adaption when changing movement direction.
speed | Direction-independent unscaled speed. |
Definition at line 403 of file vehicle_base.h.
Get a map of cargoes and free capacities in the consist.
capacities | Map to be filled with cargoes and capacities. |
Definition at line 2249 of file vehicle.cpp.
References SmallVector< SmallPair< T, U >, S >::Append(), cargo, cargo_cap, cargo_type, SmallVector< SmallPair< T, U >, S >::End(), SmallMap< T, U, S >::Find(), Next(), and VehicleCargoList::StoredCount().
|
inlinevirtual |
Calculates the maximum speed of the vehicle under its current conditions.
Reimplemented in Train, RoadVehicle, Aircraft, and Ship.
Definition at line 493 of file vehicle_base.h.
Referenced by Train::IsInDepot().
|
inlinevirtual |
Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing.
Reimplemented in Train, RoadVehicle, Aircraft, and Ship.
Definition at line 487 of file vehicle_base.h.
|
inline |
Gets the profit vehicle had last year.
It can be sent into SetDParam for string processing.
Definition at line 573 of file vehicle_base.h.
Referenced by GroupStatistics::VehicleReachedProfitAge().
|
inline |
Gets the profit vehicle had this year.
It can be sent into SetDParam for string processing.
Definition at line 567 of file vehicle_base.h.
|
inline |
Gets the running cost of a vehicle that can be sent into SetDParam for string processing.
Definition at line 561 of file vehicle_base.h.
|
inlinevirtual |
Gets the speed in km-ish/h that can be sent into SetDParam for string processing.
Reimplemented in Train, RoadVehicle, Aircraft, and Ship.
Definition at line 481 of file vehicle_base.h.
Referenced by VehicleViewWindow::DrawWidget().
const Engine * Vehicle::GetEngine | ( | ) | const |
Retrieves the engine of the vehicle.
Definition at line 743 of file vehicle.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get().
Referenced by AgeVehicle(), RefitWindow::BuildRefitList(), CheckConsistencyOfArticulatedVehicle(), GetBestFittingSubType(), GetCargoSummaryOfArticulatedVehicle(), GetLoadAmount(), GetNewCargoTypeForReplace(), GetRoadVehLength(), Ship::GetRunningCost(), Aircraft::GetRunningCost(), RoadVehicle::GetRunningCost(), Train::GetRunningCost(), IsArticulatedVehicleCarryingDifferentCargoes(), and VehicleLengthChanged().
|
inlinevirtual |
Sets the expense type associated to this vehicle type.
income | whether this is income or (running) expenses of the vehicle |
Reimplemented in Train, RoadVehicle, Aircraft, and Ship.
Definition at line 424 of file vehicle_base.h.
References EXPENSES_OTHER.
Referenced by RefitVehicle().
|
inline |
Get the first part of an articulated engine.
Definition at line 920 of file vehicle_base.h.
References IsArticulatedPart(), and Previous().
Referenced by GetBestFittingSubType(), and HandleStationRefit().
|
inline |
Get the first part of an articulated engine.
Definition at line 931 of file vehicle_base.h.
References IsArticulatedPart(), and Previous().
|
inline |
Get the first order of the vehicles order list.
Definition at line 655 of file vehicle_base.h.
const GRFFile * Vehicle::GetGRF | ( | ) | const |
Retrieve the NewGRF the vehicle is tied to.
This is the GRF providing the Action 3 for the engine type.
Definition at line 753 of file vehicle.cpp.
Referenced by CheckTrainAttachment(), CmdStartStopVehicle(), and PlayVehicleSound().
uint32 Vehicle::GetGRFID | ( | ) | const |
Retrieve the GRF ID of the NewGRF the vehicle is tied to.
This is the GRF providing the Action 3 for the engine type.
Definition at line 763 of file vehicle.cpp.
Referenced by CheckTrainAttachment(), and CmdStartStopVehicle().
GroundVehicleCache * Vehicle::GetGroundVehicleCache | ( | ) |
Access the ground vehicle cache of the vehicle.
Definition at line 2797 of file vehicle.cpp.
Referenced by LiveryHelper(), and UpdateLoadUnloadTicks().
const GroundVehicleCache * Vehicle::GetGroundVehicleCache | ( | ) | const |
Access the ground vehicle cache of the vehicle.
Definition at line 2812 of file vehicle.cpp.
uint16 & Vehicle::GetGroundVehicleFlags | ( | ) |
Access the ground vehicle flags of the vehicle.
Definition at line 2827 of file vehicle.cpp.
const uint16 & Vehicle::GetGroundVehicleFlags | ( | ) | const |
Access the ground vehicle flags of the vehicle.
Definition at line 2842 of file vehicle.cpp.
|
inlinevirtual |
Gets the sprite to show for the given direction.
direction | the direction the vehicle is facing | |
[out] | result | Vehicle sprite sequence. |
Reimplemented in Train, RoadVehicle, Aircraft, and Ship.
Definition at line 443 of file vehicle_base.h.
References VehicleSpriteSeq::Clear().
Referenced by GetSingleVehicleWidth(), and Train::IsPrimaryVehicle().
|
inline |
Get the last part of an articulated engine.
Definition at line 942 of file vehicle_base.h.
References GetNextArticulatedPart(), and HasArticulatedPart().
|
inline |
Returns the last order of a vehicle, or NULL if it doesn't exists.
Definition at line 868 of file vehicle_base.h.
|
inline |
Get the next part of an articulated engine.
Definition at line 910 of file vehicle_base.h.
Referenced by GetBestFittingSubType(), GetLastEnginePart(), GetNextVehicle(), and IsArticulatedVehicleCarryingDifferentCargoes().
|
inline |
Get the next station the vehicle will stop at.
Definition at line 700 of file vehicle_base.h.
|
inline |
Get the next real (non-articulated part) vehicle in the consist.
Definition at line 953 of file vehicle_base.h.
References GetNextArticulatedPart(), HasArticulatedPart(), and Next().
|
inline |
Get the number of manually added orders this vehicle has.
Definition at line 694 of file vehicle_base.h.
|
inline |
Get the number of orders this vehicle has.
Definition at line 688 of file vehicle_base.h.
Referenced by CmdDeleteOrder(), CmdMoveOrder(), CmdSkipToOrder(), TimetableWindow::DrawWidget(), OrdersWindow::DrawWidget(), OrdersWindow::OnDragDrop(), TimetableWindow::OnInvalidateData(), OrdersWindow::OnInvalidateData(), OrdersWindow::OnMouseDrag(), TimetableWindow::OnPaint(), OrdersWindow::OrderClick_Delete(), OrdersWindow::OrderClick_Skip(), OrdersWindow::OrderClick_StopSharing(), OrdersWindow::OrderGetSel(), VehicleOrderSaver::SwitchToNextOrder(), and UpdateOrderDest().
|
inline |
Determines the effective direction-specific vehicle movement speed.
This method belongs to the old vehicle movement method: A vehicle moves a step every 256 progress units. The vehicle speed is scaled by 3/4 when moving in X or Y direction due to the longer distance.
However, this method is slightly wrong in corners, as the leftover progress is not scaled correctly when changing movement direction. GetAdvanceSpeed() and GetAdvanceDistance() are better wrt. this.
speed | Direction-independent unscaled speed. |
Definition at line 386 of file vehicle_base.h.
Referenced by UpdateAircraftSpeed().
|
inline |
Returns order 'index' of a vehicle or NULL when it doesn't exists.
index | the order to fetch |
Definition at line 859 of file vehicle_base.h.
Referenced by ChangeTimetable(), CmdChangeTimetable(), CmdDeleteOrder(), CmdMoveOrder(), CmdOrderRefit(), OrdersWindow::OnInvalidateData(), TimetableWindow::OnPaint(), OrdersWindow::OnQueryTextFinished(), OrdersWindow::OrderClick_FullLoad(), OrdersWindow::OrderClick_Nonstop(), OrdersWindow::OrderClick_Service(), OrdersWindow::OrderClick_Unload(), LinkRefresher::Run(), OrdersWindow::SetStringParameters(), and VehicleOrderSaver::SwitchToNextOrder().
|
inlinevirtual |
Determine the location for the station where the vehicle goes to next.
Things done for example are allocating slots in a road stop or exact location of the platform is determined for ships.
station | the station to make the next location of the vehicle. |
Reimplemented in Train, RoadVehicle, Aircraft, and Ship.
Definition at line 741 of file vehicle_base.h.
References INVALID_TILE.
Referenced by Train::IsInDepot().
|
inline |
Get the previous real (non-articulated part) vehicle in the consist.
Definition at line 966 of file vehicle_base.h.
References IsArticulatedPart(), and Previous().
|
inlinevirtual |
Gets the running cost of a vehicle.
Reimplemented in Train, RoadVehicle, Aircraft, and Ship.
Definition at line 499 of file vehicle_base.h.
Referenced by Train::GetDisplayMaxSpeed().
|
inlinevirtual |
Returns the Trackdir on which the vehicle is currently located.
Works for trains and ships. Currently works only sortof for road vehicles, since they have a fuzzy concept of being "on" a trackdir. Dunno really what it returns for a road vehicle that is halfway a tile, never really understood that part. For road vehicles that are at the beginning or end of the tile, should just return the diagonal trackdir on which they are driving. I think. For other vehicles types, or vehicles with no clear trackdir (such as those in depots), returns 0xFF.
Reimplemented in Train, RoadVehicle, and Ship.
Definition at line 555 of file vehicle_base.h.
References INVALID_TRACKDIR.
Referenced by Train::IsInDepot().
bool Vehicle::HandleBreakdown | ( | ) |
Handle all of the aspects of a vehicle breakdown This includes adding smoke and sounds, and ending the breakdown when appropriate.
Definition at line 1254 of file vehicle.cpp.
References PlayVehicleSound(), VEH_AIRCRAFT, VEH_SHIP, VEH_TRAIN, VS_AIRCRAFT_BROKEN, and VSE_BREAKDOWN.
void Vehicle::HandleLoading | ( | bool | mode = false | ) |
Handle the loading of the vehicle; when not it skips through dummy orders and does nothing in all other cases.
mode | is the non-first call for this vehicle in this tick? |
Definition at line 2214 of file vehicle.cpp.
void Vehicle::HandlePathfindingResult | ( | bool | path_found | ) |
Handle the pathfinding result, especially the lost status.
If the vehicle is now lost and wasn't previously fire an event to the AIs and a news message to the user. If the vehicle is not lost anymore remove the news message.
path_found | Whether the vehicle has a path to its destination. |
Definition at line 775 of file vehicle.cpp.
References _local_company, _settings_client, AddVehicleAdviceNewsItem(), ClrBit(), DeleteVehicleNews(), ClientSettings::gui, HasBit(), GUISettings::lost_vehicle_warn, AI::NewEvent(), SetBit(), SetDParam(), and VF_PATHFINDER_LOST.
|
inline |
Check if an engine has an articulated part.
Definition at line 900 of file vehicle_base.h.
Referenced by RoadStop::Enter(), GetBestFittingSubType(), GetLastEnginePart(), RoadStop::GetNextRoadStop(), GetNextVehicle(), VehicleDetailsWindow::GetRoadVehDetailsHeight(), IsArticulatedVehicleCarryingDifferentCargoes(), IterateVehicleParts(), BaseStation::PostDestructor(), and RoadFindPathToDest().
bool Vehicle::HasDepotOrder | ( | ) | const |
Checks if a vehicle has a depot in its order list.
Definition at line 1905 of file order_cmd.cpp.
bool Vehicle::HasEngineType | ( | ) | const |
Check whether Vehicle::engine_type has any meaning.
Definition at line 727 of file vehicle.cpp.
References SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), Aircraft::IsNormalAircraft(), VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.
|
inline |
Increments cur_implicit_order_index, keeps care of the wrap-around and invalidates the GUI.
cur_real_order_index is incremented as well, if needed. Note: current_order is not invalidated.
Definition at line 799 of file vehicle_base.h.
|
inline |
Advanced cur_real_order_index to the next real order, keeps care of the wrap-around and invalidates the GUI.
cur_implicit_order_index is incremented as well, if it was equal to cur_real_order_index, i.e. cur_real_order_index is skipped but not any implicit orders. Note: current_order is not invalidated.
Definition at line 823 of file vehicle_base.h.
References InvalidateVehicleOrder().
|
inline |
Invalidates cached NewGRF variables.
Definition at line 452 of file vehicle_base.h.
References NewGRFCache::cache_valid.
Referenced by RefitWindow::BuildRefitList(), and CheckTrainAttachment().
|
inline |
Invalidates cached NewGRF variables of all vehicles in the chain (after the current vehicle)
Definition at line 461 of file vehicle_base.h.
References Next().
|
inline |
Check if the vehicle is an articulated part of an engine.
Definition at line 891 of file vehicle_base.h.
References GVSF_ARTICULATED_PART, and HasBit().
Referenced by BuildDepotVehicleList(), CheckTrainAttachment(), CmdAutoreplaceVehicle(), GetFirstEnginePart(), GetLengthOfArticulatedVehicle(), RoadVehicle::GetPower(), Train::GetPower(), GetPrevVehicle(), GetVehicleSet(), RoadVehicle::GetWeight(), and Train::GetWeight().
|
inlinevirtual |
Check whether the whole vehicle chain is in the depot.
Reimplemented in GroundVehicle< T, Type >, GroundVehicle< Train, VEH_TRAIN >, and GroundVehicle< RoadVehicle, VEH_ROAD >.
Definition at line 511 of file vehicle_base.h.
Referenced by CmdAutoreplaceVehicle(), CmdDepotMassAutoReplace(), and CmdMassStartStopVehicle().
bool Vehicle::IsEngineCountable | ( | ) | const |
Check if a vehicle is counted in num_engines in each company struct.
Definition at line 710 of file vehicle.cpp.
References SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), SpecializedVehicle< Train, Type >::From(), SpecializedVehicle< RoadVehicle, Type >::From(), IsFrontEngine(), Aircraft::IsNormalAircraft(), GroundVehicle< T, Type >::IsRearDualheaded(), VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.
|
inline |
Check if the vehicle is a front engine.
Definition at line 882 of file vehicle_base.h.
References GVSF_FRONT, and HasBit().
Referenced by CmdAutoreplaceVehicle(), CmdCloneVehicle(), CmdSellRailWagon(), RoadVehicle::Crash(), Train::Crash(), IsEngineCountable(), RoadVehicle::IsPrimaryVehicle(), Train::IsPrimaryVehicle(), NormaliseTrainHead(), RoadVehicle::OnNewDay(), Train::OnNewDay(), RoadVehicle::Tick(), Train::Tick(), TrainApproachingCrossingEnum(), and WhoCanServiceIndustry().
|
inline |
Check if the vehicle is a ground vehicle.
Definition at line 472 of file vehicle_base.h.
References VEH_ROAD, and VEH_TRAIN.
Referenced by RefitWindow::BuildRefitList(), GetOrderCmdFromTile(), RefitWindow::GetRefitOption(), GetVehiclePalette(), IsVehicleRefitable(), LiveryHelper(), VehicleViewWindow::OnTick(), OrdersWindow::OrderClick_Nonstop(), and OrdersWindow::UpdateAutoRefitState().
|
inlinevirtual |
Check whether the vehicle is in the depot.
Reimplemented in Train, RoadVehicle, Aircraft, and Ship.
Definition at line 505 of file vehicle_base.h.
Referenced by BuildDepotVehicleList().
|
inline |
Check if we share our orders with another vehicle.
Definition at line 682 of file vehicle_base.h.
Referenced by DeleteVehicleOrders(), OrdersWindow::OnInvalidateData(), OrderBackup::OrderBackup(), and OrdersWindow::OrderClick_StopSharing().
|
inline |
Check whether the vehicle is in the depot and stopped.
Definition at line 517 of file vehicle_base.h.
Referenced by CmdSellVehicle(), CmdStartStopVehicle(), IsVehicleRefitable(), and VehicleViewWindow::OnTick().
|
inline |
Get the last vehicle of this vehicle chain.
Definition at line 601 of file vehicle_base.h.
References Next().
Referenced by DepotWindow::OnMouseDrag().
|
inline |
Get the last vehicle of this vehicle chain.
Definition at line 612 of file vehicle_base.h.
References Next().
void Vehicle::LeaveStation | ( | ) |
Perform all actions when leaving a station.
Definition at line 2152 of file vehicle.cpp.
|
inline |
Get the vehicle at offset n of this vehicle chain.
n | Offset from the current vehicle. |
Definition at line 624 of file vehicle_base.h.
References Next(), and Previous().
|
inline |
Get the vehicle at offset n of this vehicle chain.
n | Offset from the current vehicle. |
Definition at line 640 of file vehicle_base.h.
References Next(), and Previous().
bool Vehicle::NeedsAutomaticServicing | ( | ) | const |
Checks if the current order should be interrupted for a service-in-depot order.
Definition at line 252 of file vehicle.cpp.
Referenced by CheckIfTrainNeedsService().
bool Vehicle::NeedsAutorenewing | ( | const Company * | c, |
bool | use_renew_setting = true |
||
) | const |
Function to tell if a vehicle needs to be autorenewed.
*c | The vehicle owner |
use_renew_setting | Should the company renew setting be considered? |
Definition at line 141 of file vehicle.cpp.
bool Vehicle::NeedsServicing | ( | ) | const |
Check if the vehicle needs to go to a depot in near future (if a opportunity presents itself) for service or replacement.
Definition at line 184 of file vehicle.cpp.
References _date, _settings_game, CT_INVALID, GameSettings::difficulty, CompanySettings::engine_renew_money, EngineReplacementForCompany(), SpecializedVehicle< Train, Type >::From(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), GetArticulatedRefitMasks(), Train::GetNextUnit(), HasBit(), INVALID_ENGINE, IsArticulatedVehicleCarryingDifferentCargoes(), CompanyProperties::money, OrderSettings::no_servicing_if_no_breakdowns, GameSettings::order, Company::settings, VEH_TRAIN, DifficultySettings::vehicle_breakdowns, VS_CRASHED, and VS_STOPPED.
|
inline |
Get the next vehicle of this vehicle.
Definition at line 582 of file vehicle_base.h.
Referenced by AfterLoadVehicles(), AircraftLeaveHangar(), RefitWindow::BuildRefitList(), CmdCloneVehicle(), CmdSellRailWagon(), NewGRFInspectWindow::DrawWidget(), GetConsistFreeCapacities(), GetNewCargoTypeForReplace(), GetNextVehicle(), VehicleDetailsWindow::GetRoadVehDetailsHeight(), GetVehicleWidth(), LinkRefresher::HandleRefit(), IncreaseStats(), InvalidateNewGRFCacheOfChain(), IsVehicleRefitable(), IterateVehicleParts(), Last(), LinkRefresher::LinkRefresher(), Move(), NewGRFInspectWindow::OnClick(), NewGRFInspectWindow::OnInvalidateData(), PositionHelper(), RerouteCargo(), ReserveConsist(), ResetRefitCaps(), VehicleCargoSorter(), VehicleValueSorter(), and WhoCanServiceIndustry().
|
inline |
Get the next vehicle of the shared vehicle chain.
Definition at line 664 of file vehicle_base.h.
Referenced by AfterLoadVehicles(), CmdAddSharedVehicleGroup(), CmdAutofillTimetable(), CmdMoveOrder(), CmdSetTimetableStart(), DeleteOrder(), InsertOrder(), OrderList::IsVehicleInSharedOrdersList(), OrderBackup::OrderBackup(), OrdersWindow::OrderClick_StopSharing(), and OrderList::RemoveVehicle().
|
inline |
Get the previous vehicle of this vehicle.
Definition at line 589 of file vehicle_base.h.
Referenced by AgeVehicle(), GetFirstEnginePart(), GetPrevVehicle(), Move(), and DepotWindow::OnMouseDrag().
|
inline |
Get the previous vehicle of the shared vehicle chain.
Definition at line 670 of file vehicle_base.h.
Referenced by OrderList::GetPositionInSharedOrderList(), and OrdersWindow::OrderClick_StopSharing().
CommandCost Vehicle::SendToDepot | ( | DoCommandFlag | flags, |
DepotCommand | command | ||
) |
Send this vehicle to the depot using the given command(s).
flags | the command flags (like execute and such). |
command | the command to execute. |
Definition at line 2279 of file vehicle.cpp.
References CheckOwnership(), CMD_ERROR, CommandCost::Failed(), and VS_CRASHED.
Referenced by CmdSendVehicleToDepot().
void Vehicle::SetNext | ( | Vehicle * | next | ) |
Set the next vehicle of this vehicle.
next | the next vehicle. NULL removes the next vehicle. |
Definition at line 2631 of file vehicle.cpp.
Referenced by CheckTrainAttachment(), DeleteLastRoadVeh(), DeleteLastWagon(), RemoveFromConsist(), and RestoreTrainBackup().
void Vehicle::ShowVisualEffect | ( | ) | const |
Draw visual effects (smoke and/or sparks) for a vehicle chain.
Definition at line 2481 of file vehicle.cpp.
|
inlineprivate |
Advance cur_real_order_index to the next real order.
cur_implicit_order_index is not touched.
Definition at line 780 of file vehicle_base.h.
|
inlinevirtual |
Calls the tick handler of the vehicle.
Reimplemented in Train, RoadVehicle, Aircraft, DisasterVehicle, Ship, and EffectVehicle.
Definition at line 529 of file vehicle_base.h.
Referenced by Train::IsInDepot().
|
inlinevirtual |
Updates the x and y offsets and the size of the sprite used for this vehicle.
direction | the direction the vehicle is facing |
Reimplemented in Train, RoadVehicle, Aircraft, DisasterVehicle, EffectVehicle, and Ship.
Definition at line 371 of file vehicle_base.h.
Referenced by Train::~Train().
void Vehicle::UpdatePosition | ( | ) |
Update the position of the vehicle.
This will update the hash that tells which vehicles are on a tile.
Definition at line 1547 of file vehicle.cpp.
Referenced by UpdateStatusAfterSwap(), and DisasterVehicle::~DisasterVehicle().
void Vehicle::UpdateViewport | ( | bool | dirty | ) |
Update the vehicle on the viewport, updating the right hash and setting the new coordinates.
dirty | Mark the (new and old) coordinates of the vehicle as dirty. |
Definition at line 1557 of file vehicle.cpp.
References RemapCoords().
void Vehicle::UpdateVisualEffect | ( | bool | allow_power_change = true | ) |
Update the cached visual effect.
allow_power_change | true if the wagon-is-powered-state may change. |
Definition at line 2358 of file vehicle.cpp.
References CALLBACK_FAILED, EngineInfo::callback_mask, CBID_VEHICLE_VISUAL_EFFECT, CBM_VEHICLE_VISUAL_EFFECT, ErrorUnknownCallbackResult(), GB(), Engine::GetGRF(), Engine::GetGRFID(), GetVehicleCallback(), HasBit(), Engine::type, VE_DEFAULT, VE_DISABLE_EFFECT, VE_DISABLE_WAGON_POWER, VEH_ROAD, VEH_SHIP, VEH_TRAIN, RailVehicleInfo::visual_effect, ShipVehicleInfo::visual_effect, and RoadVehicleInfo::visual_effect.
|
friend |
So we can set the previous and first pointers while loading.
For instantiating the shared vehicle chain.
Definition at line 249 of file vehicle_sl.cpp.
|
friend |
Convert the old style vehicles into something that resembles the old new style savegames.
Then AfterLoadGame can handle the rest of the conversion.
Definition at line 174 of file oldloader_sl.cpp.
|
friend |
So we can use private/protected variables in the saveload code.
Saving and loading the current order of vehicles.
The vehicles have a cargo list (and we want that saved).
vt | the vehicle type. Can be VEH_END for the common vehicle description data |
vt | the vehicle type. Can be VEH_END for the common vehicle description data |
Save and load of vehicles
Save and load of vehicles
Definition at line 574 of file vehicle_sl.cpp.
|
friend |
So we can set the proper next pointer while loading.
ls | State (buffer) of the currently loaded game. |
num | The number of vehicles to load. |
Definition at line 1233 of file oldloader_sl.cpp.
byte Vehicle::breakdown_ctr |
Counter for managing breakdown events.
Definition at line 263 of file vehicle_base.h.
Referenced by CmdTurnRoadVeh(), VehicleViewWindow::DrawWidget(), and TrainCheckIfLineEnds().
TileIndex Vehicle::dest_tile |
Heading for this tile.
For airports and train stations this tile does not necessarily belong to the destination station, but it can be used for heuristic purposes to estimate the distance.
Definition at line 237 of file vehicle_base.h.
Referenced by CYapfFollowShipT< Types >::CheckShipReverse(), CopyVehicleConfigAndStatistics(), ReleaseDisastersTargetingIndustry(), ReleaseDisastersTargetingVehicle(), CYapfFollowShipT< Types >::TransportTypeChar(), CYapfFollowRoadT< Types >::TransportTypeChar(), and UpdateOrderDest().