Public Member Functions | Static Public Member Functions | Data Fields | Private Member Functions | Private Attributes | Friends

Vehicle Struct Reference

Vehicle data structure. More...

#include <vehicle_base.h>

Inheritance diagram for Vehicle:
Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool > BaseVehicle BaseConsist SpecializedVehicle< T, Type > SpecializedVehicle< Aircraft, VEH_AIRCRAFT > SpecializedVehicle< DisasterVehicle, VEH_DISASTER > SpecializedVehicle< EffectVehicle, VEH_EFFECT > SpecializedVehicle< RoadVehicle, Type > SpecializedVehicle< Ship, VEH_SHIP > SpecializedVehicle< Train, Type > GroundVehicle< T, Type > Aircraft DisasterVehicle EffectVehicle GroundVehicle< RoadVehicle, VEH_ROAD > Ship GroundVehicle< Train, VEH_TRAIN > RoadVehicle Train

Public Member Functions

 Vehicle (VehicleType type=VEH_INVALID)
 Vehicle constructor.
void PreDestructor ()
 Destroy all stuff that (still) needs the virtual functions to work properly.
virtual ~Vehicle ()
 We want to 'destruct' the right class.
void BeginLoading ()
 Prepare everything to begin the loading when arriving at a station.
void CancelReservation (StationID next, Station *st)
 Return all reserved cargo packets to the station and reset all packets staged for transfer.
void LeaveStation ()
 Perform all actions when leaving a station.
GroundVehicleCacheGetGroundVehicleCache ()
 Access the ground vehicle cache of the vehicle.
const GroundVehicleCacheGetGroundVehicleCache () const
 Access the ground vehicle cache of the vehicle.
uint16 & GetGroundVehicleFlags ()
 Access the ground vehicle flags of the vehicle.
const uint16 & GetGroundVehicleFlags () const
 Access the ground vehicle flags of the vehicle.
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.
void GetConsistFreeCapacities (SmallMap< CargoID, uint > &capacities) const
 Get a map of cargoes and free capacities in the consist.
uint GetConsistTotalCapacity () const
virtual void MarkDirty ()
 Marks the vehicles to be redrawn and updates cached variables.
virtual void UpdateDeltaXY (Direction direction)
 Updates the x and y offsets and the size of the sprite used for this vehicle.
uint GetOldAdvanceSpeed (uint speed)
 Determines the effective direction-specific vehicle movement speed.
uint GetAdvanceDistance ()
 Determines the vehicle "progress" needed for moving a step.
virtual ExpensesType GetExpenseType (bool income) const
 Sets the expense type associated to this vehicle type.
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 EngineGetEngine () const
 Retrieves the engine of the vehicle.
virtual SpriteID GetImage (Direction direction, EngineImageType image_type) const
 Gets the sprite to show for the given direction.
const GRFFileGetGRF () const
 Retrieve the NewGRF the vehicle is tied to.
uint32 GetGRFID () const
 Retrieve the GRF ID of the NewGRF the vehicle is tied to.
void InvalidateNewGRFCache ()
 Invalidates cached NewGRF variables.
void InvalidateNewGRFCacheOfChain ()
 Invalidates cached NewGRF variables of all vehicles in the chain (after the current vehicle).
bool IsGroundVehicle () const
 Check if the vehicle is a ground vehicle.
virtual int GetDisplaySpeed () const
 Gets the speed in km-ish/h that can be sent into SetDParam for string processing.
virtual int GetDisplayMaxSpeed () const
 Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing.
virtual int GetCurrentMaxSpeed () const
 Calculates the maximum speed of the vehicle under its current conditions.
virtual Money GetRunningCost () const
 Gets the running cost of a vehicle.
virtual bool IsInDepot () const
 Check whether the vehicle is in the depot.
virtual bool IsChainInDepot () const
 Check whether the whole vehicle chain is in the depot.
bool IsStoppedInDepot () const
 Check whether the vehicle is in the depot *and* stopped.
virtual bool Tick ()
 Calls the tick handler of the vehicle.
virtual void OnNewDay ()
 Calls the new day handler of the vehicle.
virtual uint Crash (bool flooded=false)
 Crash the (whole) vehicle chain.
virtual Trackdir GetVehicleTrackdir () const
 Returns the Trackdir on which the vehicle is currently located.
Money GetDisplayRunningCost () const
 Gets the running cost of a vehicle that can be sent into SetDParam for string processing.
Money GetDisplayProfitThisYear () const
 Gets the profit vehicle had this year.
Money GetDisplayProfitLastYear () const
 Gets the profit vehicle had last year.
void SetNext (Vehicle *next)
 Set the next vehicle of this vehicle.
VehicleNext () const
 Get the next vehicle of this vehicle.
VehiclePrevious () const
 Get the previous vehicle of this vehicle.
VehicleFirst () const
 Get the first vehicle of this vehicle chain.
VehicleLast ()
 Get the last vehicle of this vehicle chain.
const VehicleLast () const
 Get the last vehicle of this vehicle chain.
VehicleMove (int n)
 Get the vehicle at offset n of this vehicle chain.
const VehicleMove (int n) const
 Get the vehicle at offset n of this vehicle chain.
OrderGetFirstOrder () const
 Get the first order of the vehicles order list.
void AddToShared (Vehicle *shared_chain)
 Adds this vehicle to a shared vehicle chain.
void RemoveFromShared ()
 Removes the vehicle from the shared order list.
VehicleNextShared () const
 Get the next vehicle of the shared vehicle chain.
VehiclePreviousShared () const
 Get the previous vehicle of the shared vehicle chain.
VehicleFirstShared () const
 Get the first vehicle of this vehicle chain.
bool IsOrderListShared () const
 Check if we share our orders with another vehicle.
VehicleOrderID GetNumOrders () const
 Get the number of orders this vehicle has.
VehicleOrderID GetNumManualOrders () const
 Get the number of manually added orders this vehicle has.
StationID GetNextStoppingStation () const
 Get the next station the vehicle will stop at.
void RefreshNextHopsStats ()
 Predict a vehicle's course from its current state and refresh all links it will visit.
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.
bool HandleBreakdown ()
 Handle all of the aspects of a vehicle breakdown This includes adding smoke and sounds, and ending the breakdown when appropriate.
bool NeedsAutorenewing (const Company *c, bool use_renew_setting=true) const
 Function to tell if a vehicle needs to be autorenewed.
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.
bool NeedsAutomaticServicing () const
 Checks if the current order should be interrupted for a service-in-depot order.
virtual TileIndex GetOrderStationLocation (StationID station)
 Determine the location for the station where the vehicle goes to next.
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.
CommandCost SendToDepot (DoCommandFlag flags, DepotCommand command)
 Send this vehicle to the depot using the given command(s).
void UpdateVisualEffect (bool allow_power_change=true)
 Update the cached visual effect.
void ShowVisualEffect () const
 Draw visual effects (smoke and/or sparks) for a vehicle chain.
void IncrementImplicitOrderIndex ()
 Increments cur_implicit_order_index, keeps care of the wrap-around and invalidates the GUI.
void IncrementRealOrderIndex ()
 Advanced cur_real_order_index to the next real order, keeps care of the wrap-around and invalidates the GUI.
void UpdateRealOrderIndex ()
 Skip implicit orders until cur_real_order_index is a non-implicit order.
OrderGetOrder (int index) const
 Returns order 'index' of a vehicle or NULL when it doesn't exists.
OrderGetLastOrder () const
 Returns the last order of a vehicle, or NULL if it doesn't exists.
bool IsEngineCountable () const
 Check if a vehicle is counted in num_engines in each company struct.
bool HasEngineType () const
 Check whether Vehicle::engine_type has any meaning.
bool HasDepotOrder () const
 Checks if a vehicle has a depot in its order list.
void HandlePathfindingResult (bool path_found)
 Handle the pathfinding result, especially the lost status.
bool IsFrontEngine () const
 Check if the vehicle is a front engine.
bool IsArticulatedPart () const
 Check if the vehicle is an articulated part of an engine.
bool HasArticulatedPart () const
 Check if an engine has an articulated part.
VehicleGetNextArticulatedPart () const
 Get the next part of an articulated engine.
VehicleGetFirstEnginePart ()
 Get the first part of an articulated engine.
const VehicleGetFirstEnginePart () const
 Get the first part of an articulated engine.
VehicleGetLastEnginePart ()
 Get the last part of an articulated engine.
VehicleGetNextVehicle () const
 Get the next real (non-articulated part) vehicle in the consist.
VehicleGetPrevVehicle () const
 Get the previous real (non-articulated part) vehicle in the consist.

Static Public Member Functions

static uint GetAdvanceSpeed (uint speed)
 Determines the effective vehicle movement speed.

Data Fields

TileIndex tile
 Current tile index.
TileIndex dest_tile
 Heading for this tile.
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.
CargoPaymentcargo_payment
 The cargo payment we're currently in.
Rect coord
 NOSAVE: Graphical bounding box of the vehicle, i.e. what to redraw on moves.
Vehiclehash_viewport_next
 NOSAVE: Next vehicle in the visual location hash.
Vehicle ** hash_viewport_prev
 NOSAVE: Previous vehicle in the visual location hash.
Vehiclehash_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.
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
SpriteID cur_image
 sprite number for this vehicle
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.
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.

Private Member Functions

void SkipToNextRealOrderIndex ()
 Advance cur_real_order_index to the next real order.

Private Attributes

Vehiclenext
 pointer to the next vehicle in the chain
Vehicleprevious
 NOSAVE: pointer to the previous vehicle in the chain.
Vehiclefirst
 NOSAVE: pointer to the first vehicle in the chain.
Vehiclenext_shared
 pointer to the next vehicle that shares the order
Vehicleprevious_shared
 NOSAVE: pointer to the previous vehicle in the shared order chain.

Friends

const SaveLoadGetVehicleDescription (VehicleType vt)
 So we can use private/protected variables in the saveload code.
void FixOldVehicles ()
 Convert the old style vehicles into something that resembles the old new style savegames.
void AfterLoadVehicles (bool part_of_load)
 So we can set the previous and first pointers while loading.
bool LoadOldVehicle (LoadgameState *ls, int num)
 So we can set the proper next pointer while loading.

Detailed Description

Vehicle data structure.

Definition at line 126 of file vehicle_base.h.


Constructor & Destructor Documentation

Vehicle::Vehicle ( VehicleType  type = VEH_INVALID  ) 

Vehicle constructor.

Parameters:
type Type of the new vehicle.

Definition at line 263 of file vehicle.cpp.

References cargo_age_counter, colourmap, coord, DEFAULT_GROUP, fill_percent_te_id, first, group_id, and INVALID_COORD.


Member Function Documentation

void Vehicle::AddToShared ( Vehicle shared_chain  ) 

Adds this vehicle to a shared vehicle chain.

Parameters:
shared_chain a vehicle of the chain with shared vehicles.
Precondition:
!this->IsOrderListShared()

Definition at line 2534 of file vehicle.cpp.

References OrderList::AddVehicle(), list, next_shared, orders, and previous_shared.

Referenced by AfterLoadVehicles(), CmdCloneOrder(), and CmdSellRailWagon().

void Vehicle::BeginLoading (  ) 

Prepare everything to begin the loading when arriving at a station.

Precondition:
IsTileType(this->tile, MP_STATION) || this->type == VEH_SHIP.

Definition at line 1875 of file vehicle.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::CanAllocateItem(), ClrBit(), BaseConsist::cur_implicit_order_index, BaseConsist::cur_real_order_index, cur_speed, current_order, DeleteOrder(), DeleteUnreachedImplicitOrders(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Get(), SpecializedStation< Station, false >::Get(), Order::GetDestination(), GetGroundVehicleFlags(), GetLastOrder(), Order::GetLoadType(), GetNumOrders(), GetOrder(), Order::GetUnloadType(), GetWindowClassForVehicleType(), GVF_SUPPRESS_IMPLICIT_ORDERS, HasBit(), IncreaseStats(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::index, InsertOrder(), InvalidateVehicleOrder(), IsGroundVehicle(), IsTileType(), Order::IsType(), last_loading_station, last_station_visited, Order::MakeImplicit(), Order::MakeLoading(), MarkDirty(), MAX_VEH_ORDER_ID, MP_STATION, Order::next, ONSF_NO_STOP_AT_ANY_STATION, orders, owner, PrepareUnload(), Order::SetNonStopType(), SetWindowDirty(), SetWindowWidgetDirty(), tile, BaseVehicle::type, UpdateVehicleTimetable(), VEH_SHIP, WC_STATION_VIEW, WC_VEHICLE_DETAILS, WC_VEHICLE_VIEW, and WID_VV_START_STOP.

Referenced by AircraftEntersTerminal(), and TrainEnterStation().

void Vehicle::CancelReservation ( StationID  next,
Station st 
)

Return all reserved cargo packets to the station and reset all packets staged for transfer.

Parameters:
st the station where the reserved packets should go.

Definition at line 1994 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.

Referenced by LeaveStation(), and PreDestructor().

void Vehicle::CopyVehicleConfigAndStatistics ( const Vehicle src  )  [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.

Parameters:
src The old vehicle

Definition at line 622 of file vehicle_base.h.

References BaseConsist::CopyConsistPropertiesFrom(), current_order, dest_tile, profit_last_year, profit_this_year, and unitnumber.

Referenced by CmdSellRailWagon(), and CopyHeadSpecificThings().

virtual bool Vehicle::FindClosestDepot ( TileIndex location,
DestinationID *  destination,
bool *  reverse 
) [inline, virtual]

Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should reverse.

Parameters:
location where do we go to?
destination what hangar do we go to?
reverse should the vehicle be reversed?
Returns:
true if a depot could be found.

Reimplemented in Aircraft, RoadVehicle, Ship, and Train.

Definition at line 660 of file vehicle_base.h.

Referenced by SendToDepot(), and UpdateOrderDest().

uint Vehicle::GetAdvanceDistance (  )  [inline]

Determines the vehicle "progress" needed for moving a step.

Together with GetAdvanceSpeed() this function is a replacement for GetOldAdvanceSpeed().

Returns:
distance to drive for a movement step on the map.

Definition at line 324 of file vehicle_base.h.

References direction.

static uint Vehicle::GetAdvanceSpeed ( uint  speed  )  [inline, static]

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.

Parameters:
speed Direction-independent unscaled speed.
Returns:
speed, scaled to match GetAdvanceDistance().

Definition at line 312 of file vehicle_base.h.

Referenced by GroundVehicle< RoadVehicle, VEH_ROAD >::DoUpdateSpeed().

void Vehicle::GetConsistFreeCapacities ( SmallMap< CargoID, uint > &  capacities  )  const

Get a map of cargoes and free capacities in the consist.

Parameters:
capacities Map to be filled with cargoes and capacities.

Definition at line 2194 of file vehicle.cpp.

References SmallVector< SmallPair< T, U >, S >::Append(), cargo, cargo_cap, cargo_type, CargoList< Tinst, Tcont >::Count(), SmallVector< SmallPair< T, U >, S >::End(), SmallMap< T, U, S >::Find(), and Next().

Referenced by OrderList::GetBestLoadableNext().

virtual int Vehicle::GetCurrentMaxSpeed (  )  const [inline, virtual]

Calculates the maximum speed of the vehicle under its current conditions.

Returns:
Current maximum speed in native units.

Reimplemented in Aircraft, RoadVehicle, Ship, and Train.

Definition at line 402 of file vehicle_base.h.

virtual int Vehicle::GetDisplayMaxSpeed (  )  const [inline, virtual]

Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing.

Returns:
the vehicle's maximum speed

Reimplemented in Aircraft, RoadVehicle, Ship, and Train.

Definition at line 396 of file vehicle_base.h.

Referenced by VehicleDetailsWindow::DrawWidget(), and ProcessConditionalOrder().

Money Vehicle::GetDisplayProfitLastYear (  )  const [inline]

Gets the profit vehicle had last year.

It can be sent into SetDParam for string processing.

Returns:
the vehicle's profit last year

Definition at line 482 of file vehicle_base.h.

References profit_last_year.

Referenced by GroupStatistics::CountVehicle(), BaseVehicleListWindow::DrawVehicleListItems(), DrawVehicleProfitButton(), VehicleDetailsWindow::DrawWidget(), and GroupStatistics::VehicleReachedProfitAge().

Money Vehicle::GetDisplayProfitThisYear (  )  const [inline]

Gets the profit vehicle had this year.

It can be sent into SetDParam for string processing.

Returns:
the vehicle's profit this year

Definition at line 476 of file vehicle_base.h.

References profit_this_year.

Referenced by BaseVehicleListWindow::DrawVehicleListItems(), and VehicleDetailsWindow::DrawWidget().

Money Vehicle::GetDisplayRunningCost (  )  const [inline]

Gets the running cost of a vehicle that can be sent into SetDParam for string processing.

Returns:
the vehicle's running cost

Definition at line 470 of file vehicle_base.h.

References GetRunningCost().

Referenced by VehicleDetailsWindow::DrawWidget().

virtual int Vehicle::GetDisplaySpeed (  )  const [inline, virtual]

Gets the speed in km-ish/h that can be sent into SetDParam for string processing.

Returns:
the vehicle's speed

Reimplemented in Aircraft, RoadVehicle, Ship, and Train.

Definition at line 390 of file vehicle_base.h.

Referenced by VehicleViewWindow::DrawWidget().

virtual ExpensesType Vehicle::GetExpenseType ( bool  income  )  const [inline, virtual]

Sets the expense type associated to this vehicle type.

Parameters:
income whether this is income or (running) expenses of the vehicle

Reimplemented in Aircraft, RoadVehicle, Ship, and Train.

Definition at line 333 of file vehicle_base.h.

Referenced by RefitVehicle().

const Vehicle* Vehicle::GetFirstEnginePart (  )  const [inline]
Order* Vehicle::GetFirstOrder (  )  const [inline]

Get the first order of the vehicles order list.

Returns:
first order of order list.

Definition at line 564 of file vehicle_base.h.

References orders.

Referenced by CmdCloneOrder(), DrawOrderString(), and UpdateVehicleTimetable().

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.

Returns:
NewGRF associated to the vehicle.

Definition at line 669 of file vehicle.cpp.

References GetEngine(), and Engine::GetGRF().

Referenced by RefitWindow::BuildRefitList(), CheckTrainAttachment(), CmdStartStopVehicle(), GetCargoSubtypeText(), 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.

Returns:
GRF ID of the associated NewGRF.

Definition at line 679 of file vehicle.cpp.

References GetEngine(), and Engine::GetGRFID().

Referenced by RefitWindow::BuildRefitList(), CheckTrainAttachment(), CmdStartStopVehicle(), GetCargoSubtypeText(), and RunVehicleDayProc().

const GroundVehicleCache * Vehicle::GetGroundVehicleCache (  )  const

Access the ground vehicle cache of the vehicle.

Precondition:
The vehicle is a GroundVehicle.
Returns:
GroundVehicleCache of the vehicle.

Definition at line 2686 of file vehicle.cpp.

References SpecializedVehicle< RoadVehicle, Type >::From(), SpecializedVehicle< Train, Type >::From(), GroundVehicle< T, Type >::gcache, IsGroundVehicle(), BaseVehicle::type, and VEH_TRAIN.

const uint16 & Vehicle::GetGroundVehicleFlags (  )  const

Access the ground vehicle flags of the vehicle.

Precondition:
The vehicle is a GroundVehicle.
Returns:
GroundVehicleFlags of the vehicle.

Definition at line 2716 of file vehicle.cpp.

References SpecializedVehicle< RoadVehicle, Type >::From(), SpecializedVehicle< Train, Type >::From(), GroundVehicle< T, Type >::gv_flags, IsGroundVehicle(), BaseVehicle::type, and VEH_TRAIN.

uint16 & Vehicle::GetGroundVehicleFlags (  ) 
virtual SpriteID Vehicle::GetImage ( Direction  direction,
EngineImageType  image_type 
) const [inline, virtual]

Gets the sprite to show for the given direction.

Parameters:
direction the direction the vehicle is facing
Returns:
the sprite for the given vehicle in the given direction

Reimplemented in Aircraft, RoadVehicle, Ship, and Train.

Definition at line 352 of file vehicle_base.h.

Referenced by AfterLoadVehicles(), DepotWindow::DepotClick(), DrawAircraftImage(), DrawShipImage(), DepotWindow::DrawVehicleInDepot(), VehicleDetailsWindow::DrawWidget(), GetVehicleWidth(), and VehicleGroupWindow::OnClick().

Order* Vehicle::GetLastOrder (  )  const [inline]

Returns the last order of a vehicle, or NULL if it doesn't exists.

Returns:
last order of a vehicle, if available

Definition at line 760 of file vehicle_base.h.

References orders.

Referenced by BeginLoading(), and CheckOrders().

StationID Vehicle::GetNextStoppingStation (  )  const [inline]

Get the next station the vehicle will stop at.

Returns:
ID of the next station the vehicle will stop at or INVALID_STATION.

Definition at line 609 of file vehicle_base.h.

References orders.

Referenced by LoadUnloadVehicle(), and PrepareUnload().

Vehicle* Vehicle::GetNextVehicle (  )  const [inline]
VehicleOrderID Vehicle::GetNumManualOrders (  )  const [inline]

Get the number of manually added orders this vehicle has.

Returns:
the number of manually added orders this vehicle has.

Definition at line 603 of file vehicle_base.h.

References orders.

Referenced by VehicleViewWindow::DrawWidget(), ProcessOrders(), SkipToNextRealOrderIndex(), UpdateOrderDest(), and UpdateRealOrderIndex().

uint Vehicle::GetOldAdvanceSpeed ( uint  speed  )  [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.

Parameters:
speed Direction-independent unscaled speed.
Returns:
speed scaled by movement direction. 256 units are required for each movement step.

Definition at line 295 of file vehicle_base.h.

References direction.

Referenced by UpdateAircraftSpeed().

virtual TileIndex Vehicle::GetOrderStationLocation ( StationID  station  )  [inline, virtual]

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.

Parameters:
station the station to make the next location of the vehicle.
Returns:
the location (tile) to aim for.

Reimplemented in Aircraft, RoadVehicle, Ship, and Train.

Definition at line 650 of file vehicle_base.h.

References INVALID_TILE.

Referenced by UpdateOrderDest().

Vehicle* Vehicle::GetPrevVehicle (  )  const [inline]
virtual Money Vehicle::GetRunningCost (  )  const [inline, virtual]

Gets the running cost of a vehicle.

Returns:
the vehicle's running cost

Reimplemented in Aircraft, RoadVehicle, Ship, and Train.

Definition at line 408 of file vehicle_base.h.

Referenced by GetDisplayRunningCost().

virtual Trackdir Vehicle::GetVehicleTrackdir (  )  const [inline, virtual]

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.

Returns:
the trackdir of the vehicle

Reimplemented in RoadVehicle, Ship, and Train.

Definition at line 464 of file vehicle_base.h.

Referenced by RemoveFromRailBaseStation().

bool Vehicle::HandleBreakdown (  ) 

Handle all of the aspects of a vehicle breakdown This includes adding smoke and sounds, and ending the breakdown when appropriate.

Returns:
true iff the vehicle is stopped because of a breakdown
Note:
This function always returns false for aircraft, since these never stop for breakdowns

Definition at line 1131 of file vehicle.cpp.

References _settings_game, EffectVehicle::animation_state, breakdown_ctr, breakdown_delay, breakdowns_since_last_service, CreateEffectVehicleRel(), cur_speed, current_order, EF_NO_BREAKDOWN_SMOKE, engine_type, EV_BREAKDOWN_SMOKE, GameSettings::game_creation, HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::index, Order::IsType(), GameCreationSettings::landscape, MarkDirty(), PlayVehicleSound(), SetWindowDirty(), tick_counter, BaseVehicle::type, VEH_AIRCRAFT, VEH_TRAIN, vehstatus, VS_HIDDEN, VSE_BREAKDOWN, WC_VEHICLE_DETAILS, and WC_VEHICLE_VIEW.

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.

Parameters:
mode is the non-first call for this vehicle in this tick?

Definition at line 2159 of file vehicle.cpp.

References BaseConsist::cur_implicit_order_index, current_order, BaseConsist::current_order_time, Order::GetDestination(), GetOrder(), Order::GetType(), HasBit(), IncrementImplicitOrderIndex(), Order::IsType(), last_station_visited, LeaveStation(), max(), PlayLeaveStationSound(), BaseConsist::vehicle_flags, VF_LOADING_FINISHED, and Order::wait_time.

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.

Parameters:
path_found Whether the vehicle has a path to its destination.

Definition at line 691 of file vehicle.cpp.

References _local_company, _settings_client, AddVehicleAdviceNewsItem(), ClrBit(), DeleteVehicleNews(), ClientSettings::gui, HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::index, GUISettings::lost_vehicle_warn, AI::NewEvent(), owner, SetBit(), SetDParam(), BaseConsist::vehicle_flags, and VF_PATHFINDER_LOST.

Referenced by ChooseShipTrack(), and RoadFindPathToDest().

bool Vehicle::HasDepotOrder (  )  const

Checks if a vehicle has a depot in its order list.

Returns:
True iff at least one order is a depot order.

Definition at line 1899 of file order_cmd.cpp.

References Order::IsType().

Referenced by NeedsAutomaticServicing().

bool Vehicle::HasEngineType (  )  const

Check whether Vehicle::engine_type has any meaning.

Returns:
true if the vehicle has a useable engine type.

Definition at line 643 of file vehicle.cpp.

References SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), Aircraft::IsNormalAircraft(), BaseVehicle::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.

Referenced by RunVehicleDayProc().

void Vehicle::IncrementImplicitOrderIndex (  )  [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 691 of file vehicle_base.h.

References BaseConsist::cur_implicit_order_index, BaseConsist::cur_real_order_index, GetNumOrders(), GetOrder(), InvalidateVehicleOrder(), and SkipToNextRealOrderIndex().

Referenced by HandleLoading(), IncrementRealOrderIndex(), ProcessOrders(), and VehicleEnterDepot().

void Vehicle::IncrementRealOrderIndex (  )  [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 715 of file vehicle_base.h.

References BaseConsist::cur_implicit_order_index, BaseConsist::cur_real_order_index, IncrementImplicitOrderIndex(), InvalidateVehicleOrder(), and SkipToNextRealOrderIndex().

Referenced by Train::GetOrderStationLocation(), Ship::GetOrderStationLocation(), RoadVehicle::GetOrderStationLocation(), SendToDepot(), and UpdateOrderDest().

void Vehicle::InvalidateNewGRFCache (  )  [inline]
void Vehicle::InvalidateNewGRFCacheOfChain (  )  [inline]

Invalidates cached NewGRF variables of all vehicles in the chain (after the current vehicle).

See also:
InvalidateNewGRFCache

Definition at line 370 of file vehicle_base.h.

Referenced by CmdBuildAircraft(), CmdBuildRoadVehicle(), CmdBuildShip(), CmdRefitVehicle(), RefitVehicle(), and RoadVehUpdateCache().

virtual bool Vehicle::IsChainInDepot (  )  const [inline, virtual]

Check whether the whole vehicle chain is in the depot.

Returns:
true if and only if the whole chain is in the depot.

Reimplemented in GroundVehicle< T, Type >, GroundVehicle< Train, VEH_TRAIN >, and GroundVehicle< RoadVehicle, VEH_ROAD >.

Definition at line 420 of file vehicle_base.h.

References IsInDepot().

Referenced by CmdAutoreplaceVehicle(), CmdDepotMassAutoReplace(), CmdMassStartStopVehicle(), BaseVehicleListWindow::DrawVehicleListItems(), and IsStoppedInDepot().

virtual bool Vehicle::IsInDepot (  )  const [inline, virtual]

Check whether the vehicle is in the depot.

Returns:
true if and only if the vehicle is in the depot.

Reimplemented in Aircraft, RoadVehicle, Ship, and Train.

Definition at line 414 of file vehicle_base.h.

Referenced by BuildDepotVehicleList(), and IsChainInDepot().

bool Vehicle::IsOrderListShared (  )  const [inline]

Check if we share our orders with another vehicle.

Returns:
true if there are other vehicles sharing the same order

Definition at line 591 of file vehicle_base.h.

References orders.

Referenced by DeleteVehicleOrders(), OrdersWindow::DrawWidget(), TimetableWindow::OnPaint(), OrderBackup::OrderBackup(), and OrdersWindow::OrderClick_StopSharing().

bool Vehicle::IsStoppedInDepot (  )  const [inline]

Check whether the vehicle is in the depot *and* stopped.

Returns:
true if and only if the vehicle is in the depot and stopped.

Definition at line 426 of file vehicle_base.h.

References First(), IsChainInDepot(), IsPrimaryVehicle(), vehstatus, and VS_STOPPED.

Referenced by CcBuildWagon(), CmdAutoreplaceVehicle(), CmdMoveRailVehicle(), CmdRefitVehicle(), CmdReverseTrainDirection(), CmdSellVehicle(), CmdStartStopVehicle(), IsVehicleRefitable(), VehicleViewWindow::OnTick(), and SendToDepot().

const Vehicle* Vehicle::Last (  )  const [inline]
Vehicle* Vehicle::Move ( int  n  )  [inline]

Get the vehicle at offset n of this vehicle chain.

Parameters:
n Offset from the current vehicle.
Returns:
The new vehicle or NULL if the offset is out-of-bounds.

Definition at line 533 of file vehicle_base.h.

References Next(), and Previous().

Referenced by VehicleResolverObject::GetScope().

const Vehicle* Vehicle::Move ( int  n  )  const [inline]

Get the vehicle at offset n of this vehicle chain.

Parameters:
n Offset from the current vehicle.
Returns:
The new vehicle or NULL if the offset is out-of-bounds.

Definition at line 549 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.

See also:
NeedsServicing()
Returns:
true if the current order should be interrupted.

Definition at line 174 of file vehicle.cpp.

References current_order, Order::GetDepotOrderType(), HasDepotOrder(), Order::IsType(), and NeedsServicing().

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.

Parameters:
*c The vehicle owner
use_renew_setting Should the company renew setting be considered?
Returns:
true if the vehicle is old enough for replacement

Definition at line 73 of file vehicle.cpp.

References SpecializedVehicle< Train, Type >::From(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), and VEH_TRAIN.

Referenced by GetNewEngineType(), and NeedsServicing().

Vehicle* Vehicle::Previous (  )  const [inline]
Vehicle* Vehicle::PreviousShared (  )  const [inline]

Get the previous vehicle of the shared vehicle chain.

Returns:
the previous shared vehicle or NULL when there isn't a previous vehicle.

Definition at line 579 of file vehicle_base.h.

References previous_shared.

Referenced by AfterLoadVehicles(), OrderList::GetPositionInSharedOrderList(), OrderList::Initialize(), and OrdersWindow::OrderClick_StopSharing().

void Vehicle::SetNext ( Vehicle next  ) 

Set the next vehicle of this vehicle.

Parameters:
next the next vehicle. NULL removes the next vehicle.

Definition at line 2505 of file vehicle.cpp.

References first, next, Next(), and previous.

Referenced by AddArticulatedParts(), CheckTrainAttachment(), CmdBuildAircraft(), DeleteLastRoadVeh(), DeleteLastWagon(), Disaster_Helicopter_Init(), Disaster_Small_Ufo_Init(), Disaster_Zeppeliner_Init(), DisasterTick_Big_Ufo(), InsertInConsist(), RemoveFromConsist(), RestoreTrainBackup(), and ~Vehicle().

void Vehicle::SkipToNextRealOrderIndex (  )  [inline, private]

Advance cur_real_order_index to the next real order.

cur_implicit_order_index is not touched.

Definition at line 672 of file vehicle_base.h.

References BaseConsist::cur_real_order_index, GetNumManualOrders(), GetNumOrders(), and GetOrder().

Referenced by IncrementImplicitOrderIndex(), and IncrementRealOrderIndex().

virtual bool Vehicle::Tick (  )  [inline, virtual]

Calls the tick handler of the vehicle.

Returns:
is this vehicle still valid?

Reimplemented in Aircraft, EffectVehicle, RoadVehicle, Ship, Train, and DisasterVehicle.

Definition at line 438 of file vehicle_base.h.

virtual void Vehicle::UpdateDeltaXY ( Direction  direction  )  [inline, virtual]

Updates the x and y offsets and the size of the sprite used for this vehicle.

Parameters:
direction the direction the vehicle is facing

Reimplemented in Aircraft, EffectVehicle, RoadVehicle, Ship, Train, and DisasterVehicle.

Definition at line 280 of file vehicle_base.h.

Referenced by AfterLoadVehicles().


Friends And Related Function Documentation

void AfterLoadVehicles ( bool  part_of_load  )  [friend]

So we can set the previous and first pointers while loading.

For instantiating the shared vehicle chain.

Definition at line 243 of file vehicle_sl.cpp.

void FixOldVehicles (  )  [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 171 of file oldloader_sl.cpp.

const SaveLoad* GetVehicleDescription ( VehicleType  vt  )  [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).

Parameters:
vt the vehicle type. Can be VEH_END for the common vehicle description data
Returns:
the saveload description
Parameters:
vt the vehicle type. Can be VEH_END for the common vehicle description data
Returns:
the saveload description

Save and load of vehicles

Save and load of vehicles

Definition at line 553 of file vehicle_sl.cpp.

bool LoadOldVehicle ( LoadgameState ls,
int  num 
) [friend]

So we can set the proper next pointer while loading.

Parameters:
ls State (buffer) of the currently loaded game.
num The number of vehicles to load.
Returns:
True iff loading went without problems.

Definition at line 1230 of file oldloader_sl.cpp.


Field Documentation


The documentation for this struct was generated from the following files: