OpenTTD Source 20241224-master-gf74b0cf984
RoadVehicle Struct Referencefinal

Buses, trucks and trams belong to this class. More...

#include <roadveh.h>

Inheritance diagram for RoadVehicle:
GroundVehicle< RoadVehicle, VEH_ROAD > SpecializedVehicle< T, Type > Vehicle Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool > BaseVehicle BaseConsist

Public Member Functions

 RoadVehicle ()
 We don't want GCC to zero our struct! It already is zeroed and has an index!
 
virtual ~RoadVehicle ()
 We want to 'destruct' the right class.
 
void MarkDirty () override
 Marks the vehicles to be redrawn and updates cached variables.
 
void UpdateDeltaXY () override
 Updates the x and y offsets and the size of the sprite used for this vehicle.
 
ExpensesType GetExpenseType (bool income) const override
 Sets the expense type associated to this vehicle type.
 
bool IsPrimaryVehicle () const override
 Whether this is the primary vehicle in the chain.
 
void GetImage (Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const override
 Gets the sprite to show for the given direction.
 
int GetDisplaySpeed () const override
 Gets the speed in km-ish/h that can be sent into SetDParam for string processing.
 
int GetDisplayMaxSpeed () const override
 Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing.
 
Money GetRunningCost () const override
 Gets the running cost of a vehicle.
 
int GetDisplayImageWidth (Point *offset=nullptr) const
 Get the width of a road vehicle image in the GUI.
 
bool IsInDepot () const override
 Check whether the vehicle is in the depot.
 
bool Tick () override
 Calls the tick handler of the vehicle.
 
void OnNewCalendarDay () override
 Calandar day handler.
 
void OnNewEconomyDay () override
 Economy day handler.
 
uint Crash (bool flooded=false) override
 Common code executed for crashed ground vehicles.
 
Trackdir GetVehicleTrackdir () const override
 Returns the Trackdir on which the vehicle is currently located.
 
TileIndex GetOrderStationLocation (StationID station) override
 Determine the location for the station where the vehicle goes to next.
 
ClosestDepot FindClosestDepot () override
 Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should reverse.
 
bool IsBus () const
 Check whether a roadvehicle is a bus.
 
int GetCurrentMaxSpeed () const override
 Calculates the maximum speed of the vehicle under its current conditions.
 
int UpdateSpeed ()
 This function looks at the vehicle and updates its speed (cur_speed and subspeed) variables.
 
void SetDestTile (TileIndex tile) override
 
- Public Member Functions inherited from GroundVehicle< RoadVehicle, VEH_ROAD >
 GroundVehicle ()
 The constructor at SpecializedVehicle must be called.
 
void PowerChanged ()
 Recalculates the cached total power of a vehicle.
 
void CargoChanged ()
 Recalculates the cached weight of a vehicle and its parts.
 
int GetAcceleration () const
 Calculates the acceleration of the vehicle under its current conditions.
 
bool IsChainInDepot () const override
 Check whether the whole vehicle chain is in the depot.
 
int64_t GetSlopeResistance () const
 Calculates the total slope resistance for this vehicle.
 
void UpdateZPositionAndInclination ()
 Updates vehicle's Z position and inclination.
 
void UpdateZPosition ()
 Updates vehicle's Z position.
 
int UpdateInclination (bool new_tile, bool update_delta)
 Checks if the vehicle is in a slope and sets the required flags in that case.
 
void SetFrontEngine ()
 Set front engine state.
 
void ClearFrontEngine ()
 Remove the front engine state.
 
void SetArticulatedPart ()
 Set a vehicle to be an articulated part.
 
void ClearArticulatedPart ()
 Clear a vehicle from being an articulated part.
 
void SetWagon ()
 Set a vehicle to be a wagon.
 
void ClearWagon ()
 Clear wagon property.
 
void SetEngine ()
 Set engine status.
 
void ClearEngine ()
 Clear engine status.
 
void SetFreeWagon ()
 Set a vehicle as a free wagon.
 
void ClearFreeWagon ()
 Clear a vehicle from being a free wagon.
 
void SetMultiheaded ()
 Set a vehicle as a multiheaded engine.
 
void ClearMultiheaded ()
 Clear multiheaded engine property.
 
bool IsFreeWagon () const
 Check if the vehicle is a free wagon (got no engine in front of it).
 
bool IsEngine () const
 Check if a vehicle is an engine (can be first in a consist).
 
bool IsWagon () const
 Check if a vehicle is a wagon.
 
bool IsMultiheaded () const
 Check if the vehicle is a multiheaded engine.
 
bool IsRearDualheaded () const
 Tell if we are dealing with the rear end of a multiheaded engine.
 
void SetLastSpeed ()
 Update the GUI variant of the current speed of the vehicle.
 
- Public Member Functions inherited from SpecializedVehicle< T, Type >
 SpecializedVehicle ()
 Set vehicle type correctly.
 
T * First () const
 Get the first vehicle in the chain.
 
T * Last ()
 Get the last vehicle in the chain.
 
const T * Last () const
 Get the last vehicle in the chain.
 
T * Next () const
 Get next vehicle in the chain.
 
T * Previous () const
 Get previous vehicle in the chain.
 
T * GetNextArticulatedPart ()
 Get the next part of an articulated engine.
 
T * GetNextArticulatedPart () const
 Get the next part of an articulated engine.
 
T * GetFirstEnginePart ()
 Get the first part of an articulated engine.
 
const T * GetFirstEnginePart () const
 Get the first part of an articulated engine.
 
T * GetLastEnginePart ()
 Get the last part of an articulated engine.
 
T * GetNextVehicle () const
 Get the next real (non-articulated part) vehicle in the consist.
 
T * GetPrevVehicle () const
 Get the previous real (non-articulated part) vehicle in the consist.
 
void UpdateViewport (bool force_update, bool update_delta)
 Update vehicle sprite- and position caches.
 
- Public Member Functions inherited from Vehicle
 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_t & GetGroundVehicleFlags ()
 Access the ground vehicle flags of the vehicle.
 
const uint16_t & 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.
 
uint GetOldAdvanceSpeed (uint speed)
 Determines the effective direction-specific vehicle movement speed.
 
uint GetAdvanceDistance ()
 Determines the vehicle "progress" needed for moving a step.
 
virtual void PlayLeaveStationSound (bool force=false) const
 Play the sound associated with leaving the station.
 
const EngineGetEngine () const
 Retrieves the engine of the vehicle.
 
const GRFFileGetGRF () const
 Retrieve the NewGRF the vehicle is tied to.
 
uint32_t 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)
 
debug_inline bool IsGroundVehicle () const
 Check if the vehicle is a ground vehicle.
 
bool IsStoppedInDepot () const
 Check whether the vehicle is in the depot and stopped.
 
void ShiftDates (TimerGameEconomy::Date interval)
 Shift all dates by given interval.
 
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.
 
StationIDStack GetNextStoppingStation () const
 Get the next station the vehicle will stop at.
 
void ResetRefitCaps ()
 Reset all refit_cap in the consist to cargo_cap.
 
void ReleaseUnitNumber ()
 Release the vehicle's unit number.
 
void CopyVehicleConfigAndStatistics (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 GetCargoTile () const
 
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 UpdatePosition ()
 Update the position of the vehicle.
 
void UpdateViewport (bool dirty)
 Update the vehicle on the viewport, updating the right hash and setting the new coordinates.
 
void UpdateBoundingBoxCoordinates (bool update_cache) const
 Update the bounding box co-ordinates of the vehicle.
 
void UpdatePositionAndViewport ()
 Update the position of the vehicle, and update the viewport.
 
bool MarkAllViewportsDirty () const
 Marks viewports dirty where the vehicle's image is.
 
uint16_t GetServiceInterval () const
 
void SetServiceInterval (uint16_t interval)
 
bool ServiceIntervalIsCustom () const
 
bool ServiceIntervalIsPercent () const
 
void SetServiceIntervalIsCustom (bool on)
 
void SetServiceIntervalIsPercent (bool on)
 
bool HasFullLoadOrder () const
 Check if the current vehicle has a full load order.
 
bool HasConditionalOrder () const
 Check if the current vehicle has a conditional order.
 
bool HasUnbunchingOrder () const
 Check if the current vehicle has an unbunching order.
 
void LeaveUnbunchingDepot ()
 Leave an unbunching depot and calculate the next departure time for shared order vehicles.
 
bool IsWaitingForUnbunching () const
 Check whether a vehicle inside a depot is waiting for unbunching.
 
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 nullptr when it doesn't exists.
 
OrderGetLastOrder () const
 Returns the last order of a vehicle, or nullptr 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.
 
debug_inline 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.
 
IterateWrapper Orders () const
 Returns an iterable ensemble of orders of a vehicle.
 
uint32_t GetDisplayMaxWeight () const
 Calculates the maximum weight of the ground vehicle when loaded.
 
uint32_t GetDisplayMinPowerToWeight () const
 Calculates the minimum power-to-weight ratio using the maximum weight of the ground vehicle.
 
- Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >
void * operator new (size_t size)
 Allocates space for new Titem.
 
void * operator new (size_t size, size_t index)
 Allocates space for new Titem with given index.
 
void * operator new (size_t, void *ptr)
 Allocates space for new Titem at given memory address.
 
void operator delete (void *p)
 Marks Titem as free.
 
- Public Member Functions inherited from BaseConsist
void CopyConsistPropertiesFrom (const BaseConsist *src)
 Copy properties of other BaseConsist.
 
void ResetDepotUnbunching ()
 Resets all the data used for depot unbunching.
 

Data Fields

RoadVehPathCache path
 Cached path.
 
uint8_t state
 
uint8_t frame
 
uint16_t blocked_ctr
 
uint8_t overtaking
 Set to RVSB_DRIVE_SIDE when overtaking, otherwise 0.
 
uint8_t overtaking_ctr
 The length of the current overtake attempt.
 
uint16_t crashed_ctr
 Animation counter when the vehicle has crashed.
 
uint8_t reverse_ctr
 
RoadType roadtype
 NOSAVE: Roadtype of this vehicle.
 
VehicleID disaster_vehicle = INVALID_VEHICLE
 NOSAVE: Disaster vehicle targetting this vehicle.
 
RoadTypes compatible_roadtypes
 NOSAVE: Roadtypes this consist is powered on.
 
- Data Fields inherited from GroundVehicle< RoadVehicle, VEH_ROAD >
GroundVehicleCache gcache
 Cache of often calculated values.
 
uint16_t gv_flags
 
- Data Fields inherited from Vehicle
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.
 
TimerGameCalendar::Year build_year
 Year the vehicle has been built.
 
TimerGameCalendar::Date age
 Age in calendar days.
 
TimerGameEconomy::Date economy_age
 Age in economy days.
 
TimerGameCalendar::Date max_age
 Maximum age.
 
TimerGameEconomy::Date date_of_last_service
 Last economy date the vehicle had a service at a depot.
 
TimerGameCalendar::Date date_of_last_service_newgrf
 Last calendar date the vehicle had a service at a depot, unchanged by the date cheat to protect against unsafe NewGRF behavior.
 
uint16_t reliability
 Reliability.
 
uint16_t reliability_spd_dec
 Reliability decrease speed.
 
uint8_t breakdown_ctr
 Counter for managing breakdown events.
 
uint8_t breakdown_delay
 Counter for managing breakdown length.
 
uint8_t breakdowns_since_last_service
 Counter for the amount of breakdowns.
 
uint8_t breakdown_chance
 Current chance of breakdowns.
 
int32_t x_pos
 x coordinate.
 
int32_t y_pos
 y coordinate.
 
int32_t z_pos
 z coordinate.
 
Direction direction
 facing
 
Owner owner
 Which company owns the vehicle?
 
uint8_t spritenum
 currently displayed sprite index 0xfd == custom sprite, 0xfe == custom second head sprite 0xff == reserved for another custom sprite
 
uint8_t x_extent
 x-extent of vehicle bounding box
 
uint8_t y_extent
 y-extent of vehicle bounding box
 
uint8_t z_extent
 z-extent of vehicle bounding box
 
int8_t x_bb_offs
 x offset of vehicle bounding box
 
int8_t y_bb_offs
 y offset of vehicle bounding box
 
int8_t x_offs
 x offset for vehicle sprite
 
int8_t 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_t cur_speed
 current speed
 
uint8_t subspeed
 fractional speed
 
uint8_t acceleration
 used by train & aircraft
 
uint32_t motion_counter
 counter to occasionally play a vehicle sound.
 
uint8_t progress
 The percentage (if divided by 256) this vehicle already crossed the tile unit.
 
uint8_t waiting_triggers
 Triggers to be yet matched before rerandomizing the random bits.
 
uint16_t random_bits
 Bits used for randomized variational spritegroups.
 
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.
 
TimerGameTick::TickCounter last_loading_tick
 Last TimerGameTick::counter tick that the vehicle has stopped at a station and could possibly leave with any cargo loaded.
 
VehicleCargoList cargo
 The cargo this vehicle is carrying.
 
CargoID cargo_type
 type of cargo this vehicle is carrying
 
uint8_t cargo_subtype
 Used for livery refits (NewGRF variations)
 
uint16_t cargo_cap
 total capacity
 
uint16_t refit_cap
 Capacity left over from before last refit.
 
uint16_t cargo_age_counter
 Ticks till cargo is aged next.
 
int8_t trip_occupancy
 NOSAVE: Occupancy of vehicle of the current trip (updated after leaving a station).
 
uint8_t day_counter
 Increased by one for each day.
 
uint8_t tick_counter
 Increased by one for each tick.
 
uint8_t running_ticks
 Number of ticks this vehicle was not stopped this day.
 
uint16_t load_unload_ticks
 Ticks to wait before starting next cycle.
 
uint8_t vehstatus
 Status.
 
uint8_t subtype
 subtype (Filled with values from AircraftSubType/DisasterSubType/EffectVehicleType/GroundVehicleSubtypeFlags)
 
Order current_order
 The current order (+ status, like: loading)
 
union { 
 
   OrderList *   orders 
 Pointer to the order list for this vehicle. More...
 
   Order *   old_orders 
 Only used during conversion of old save games. More...
 
};  
 
NewGRFCache grf_cache
 Cache of often used calculated NewGRF values.
 
VehicleCache vcache
 Cache of often used vehicle values.
 
GroupID group_id
 Index of group Pool array.
 
MutableSpriteCache sprite_cache
 Cache of sprites and values related to recalculating them, see MutableSpriteCache.
 
- Data Fields inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >
Tindex index
 Index of this pool item.
 
- Data Fields inherited from BaseVehicle
VehicleType type
 Type of vehicle.
 
- Data Fields inherited from BaseConsist
std::string name
 Name of vehicle.
 
TimerGameTick::Ticks current_order_time
 How many ticks have passed since this order started.
 
TimerGameTick::Ticks lateness_counter
 How many ticks late (or early if negative) this vehicle is.
 
TimerGameTick::TickCounter timetable_start
 At what tick of TimerGameTick::counter the vehicle should start its timetable.
 
TimerGameTick::TickCounter depot_unbunching_last_departure
 When the vehicle last left its unbunching depot.
 
TimerGameTick::TickCounter depot_unbunching_next_departure
 When the vehicle will next try to leave its unbunching depot.
 
TimerGameTick::Ticks round_trip_time
 How many ticks for a single circumnavigation of the orders.
 
uint16_t 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_t vehicle_flags
 Used for gradual loading and other miscellaneous things (.
 

Protected Member Functions

uint16_t GetPower () const
 Allows to know the power value that this vehicle will use.
 
uint16_t GetPoweredPartPower (const RoadVehicle *) const
 Returns a value if this articulated part is powered.
 
uint16_t GetWeight () const
 Allows to know the weight value that this vehicle will use.
 
uint16_t GetMaxWeight () const override
 Calculates the weight value that this vehicle will have when fully loaded with its current cargo.
 
uint8_t GetTractiveEffort () const
 Allows to know the tractive effort value that this vehicle will use.
 
uint8_t GetAirDragArea () const
 Gets the area used for calculating air drag.
 
uint8_t GetAirDrag () const
 Gets the air drag coefficient of this vehicle.
 
AccelStatus GetAccelerationStatus () const
 Checks the current acceleration status of this vehicle.
 
uint16_t GetCurrentSpeed () const
 Calculates the current speed of this vehicle.
 
uint32_t GetRollingFriction () const
 Returns the rolling friction coefficient of this vehicle.
 
int GetAccelerationType () const
 Allows to know the acceleration type of a vehicle.
 
uint32_t GetSlopeSteepness () const
 Returns the slope steepness used by this vehicle.
 
uint16_t GetMaxTrackSpeed () const
 Gets the maximum speed allowed by the track for this vehicle.
 
bool TileMayHaveSlopedTrack () const
 Checks if the vehicle is at a tile that can be sloped.
 
bool HasToUseGetSlopePixelZ ()
 Road vehicles have to use GetSlopePixelZ() to compute their height if they are reversing because in that case, their direction is not parallel with the road.
 
- Protected Member Functions inherited from GroundVehicle< RoadVehicle, VEH_ROAD >
uint DoUpdateSpeed (uint accel, int min_speed, int max_speed)
 Update the speed of the vehicle.
 

Friends

struct GroundVehicle< RoadVehicle, VEH_ROAD >
 

Additional Inherited Members

- Public Types inherited from GroundVehicle< RoadVehicle, VEH_ROAD >
typedef GroundVehicle< RoadVehicle, Type > GroundVehicleBase
 Our type.
 
- Public Types inherited from SpecializedVehicle< T, Type >
typedef SpecializedVehicle< T, Type > SpecializedVehicleBase
 Our type.
 
- Public Types inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >
typedef struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > Pool
 Type of the pool this item is going to be part of.
 
- Static Public Member Functions inherited from SpecializedVehicle< T, Type >
static bool IsValidID (size_t index)
 Tests whether given index is a valid index for vehicle of this type.
 
static T * Get (size_t index)
 Gets vehicle with given index.
 
static T * GetIfValid (size_t index)
 Returns vehicle if the index is a valid index for this vehicle type.
 
static T * From (Vehicle *v)
 Converts a Vehicle to SpecializedVehicle with type checking.
 
static const T * From (const Vehicle *v)
 Converts a const Vehicle to const SpecializedVehicle with type checking.
 
static Pool::IterateWrapper< T > Iterate (size_t from=0)
 Returns an iterable ensemble of all valid vehicles of type T.
 
- Static Public Member Functions inherited from Vehicle
static uint GetAdvanceSpeed (uint speed)
 Determines the effective vehicle movement speed.
 
- Static Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >
static bool CanAllocateItem (size_t n=1)
 Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function()
 
static bool CleaningPool ()
 Returns current state of pool cleaning - yes or no.
 
static bool IsValidID (size_t index)
 Tests whether given index can be used to get valid (non-nullptr) Titem.
 
static Titem * Get (size_t index)
 Returns Titem with given index.
 
static Titem * GetIfValid (size_t index)
 Returns Titem with given index.
 
static size_t GetPoolSize ()
 Returns first unused index.
 
static size_t GetNumItems ()
 Returns number of valid items in the pool.
 
static void PostDestructor (size_t index)
 Dummy function called after destructor of each member.
 
static Pool::IterateWrapper< Titem > Iterate (size_t from=0)
 Returns an iterable ensemble of all valid Titem.
 
- Static Public Attributes inherited from SpecializedVehicle< T, Type >
static const VehicleType EXPECTED_TYPE = Type
 Specialized type.
 

Detailed Description

Buses, trucks and trams belong to this class.

Definition at line 98 of file roadveh.h.

Constructor & Destructor Documentation

◆ RoadVehicle()

RoadVehicle::RoadVehicle ( )
inline

We don't want GCC to zero our struct! It already is zeroed and has an index!

Definition at line 113 of file roadveh.h.

◆ ~RoadVehicle()

virtual RoadVehicle::~RoadVehicle ( )
inlinevirtual

We want to 'destruct' the right class.

Definition at line 115 of file roadveh.h.

References Vehicle::PreDestructor().

Member Function Documentation

◆ Crash()

uint RoadVehicle::Crash ( bool  flooded = false)
overridevirtual

Common code executed for crashed ground vehicles.

Parameters
floodedwas this vehicle flooded?
Returns
number of victims

Reimplemented from GroundVehicle< RoadVehicle, VEH_ROAD >.

Definition at line 529 of file roadveh_cmd.cpp.

References GroundVehicle< T, Type >::Crash(), crashed_ctr, RoadStop::GetByTile(), GetRoadStopType(), Vehicle::IsFrontEngine(), IsInsideMM(), RoadStop::Leave(), RVSB_IN_DT_ROAD_STOP, state, and Vehicle::tile.

Referenced by DisasterTick_Ufo().

◆ FindClosestDepot()

ClosestDepot RoadVehicle::FindClosestDepot ( )
overridevirtual

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

Returns
A structure with information about the closest depot, if found.

Reimplemented from Vehicle.

Definition at line 347 of file roadveh_cmd.cpp.

References FindDepotData::best_length, GetDepotIndex(), and FindDepotData::tile.

◆ GetAccelerationStatus()

AccelStatus RoadVehicle::GetAccelerationStatus ( ) const
inlineprotected

Checks the current acceleration status of this vehicle.

Returns
Acceleration status.

Definition at line 223 of file roadveh.h.

References AS_ACCEL, AS_BRAKE, Vehicle::vehstatus, and VS_STOPPED.

Referenced by UpdateSpeed().

◆ GetAccelerationType()

int RoadVehicle::GetAccelerationType ( ) const
inlineprotected

Allows to know the acceleration type of a vehicle.

Returns
Zero, road vehicles always use a normal acceleration method.

Definition at line 255 of file roadveh.h.

◆ GetAirDrag()

uint8_t RoadVehicle::GetAirDrag ( ) const
inlineprotected

Gets the air drag coefficient of this vehicle.

Returns
Air drag value from the engine.

Definition at line 214 of file roadveh.h.

References RoadVehicleInfo::air_drag, and Vehicle::engine_type.

◆ GetAirDragArea()

uint8_t RoadVehicle::GetAirDragArea ( ) const
inlineprotected

Gets the area used for calculating air drag.

Returns
Area of the engine in m^2.

Definition at line 205 of file roadveh.h.

◆ GetCurrentMaxSpeed()

int RoadVehicle::GetCurrentMaxSpeed ( ) const
inlineoverridevirtual

◆ GetCurrentSpeed()

uint16_t RoadVehicle::GetCurrentSpeed ( ) const
inlineprotected

Calculates the current speed of this vehicle.

Returns
Current speed in km/h-ish.

Definition at line 232 of file roadveh.h.

References Vehicle::cur_speed.

Referenced by GetRollingFriction().

◆ GetDisplayImageWidth()

int RoadVehicle::GetDisplayImageWidth ( Point offset = nullptr) const

Get the width of a road vehicle image in the GUI.

Parameters
offsetAdditional offset for positioning the sprite; set to nullptr if not needed
Returns
Width in pixels

Definition at line 93 of file roadveh_cmd.cpp.

References GroundVehicleCache::cached_veh_length, GroundVehicle< RoadVehicle, VEH_ROAD >::gcache, ScaleSpriteTrad(), and VEHICLE_LENGTH.

Referenced by DrawRoadVehImage().

◆ GetDisplayMaxSpeed()

int RoadVehicle::GetDisplayMaxSpeed ( ) const
inlineoverridevirtual

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

Returns
the vehicle's maximum speed

Reimplemented from Vehicle.

Definition at line 125 of file roadveh.h.

References VehicleCache::cached_max_speed, and Vehicle::vcache.

Referenced by CYapfCostRoadT< Types >::PfCalcCost().

◆ GetDisplaySpeed()

int RoadVehicle::GetDisplaySpeed ( ) const
inlineoverridevirtual

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

Returns
the vehicle's speed

Reimplemented from Vehicle.

Definition at line 124 of file roadveh.h.

References GroundVehicle< RoadVehicle, VEH_ROAD >::gcache, and GroundVehicleCache::last_speed.

◆ GetExpenseType()

ExpensesType RoadVehicle::GetExpenseType ( bool  income) const
inlineoverridevirtual

Sets the expense type associated to this vehicle type.

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

Reimplemented from Vehicle.

Definition at line 121 of file roadveh.h.

References EXPENSES_ROADVEH_REVENUE, and EXPENSES_ROADVEH_RUN.

◆ GetImage()

void RoadVehicle::GetImage ( Direction  direction,
EngineImageType  image_type,
VehicleSpriteSeq result 
) const
overridevirtual

Gets the sprite to show for the given direction.

Parameters
directionthe direction the vehicle is facing
[out]resultVehicle sprite sequence.

Reimplemented from Vehicle.

Definition at line 120 of file roadveh_cmd.cpp.

References Vehicle::cargo, Vehicle::direction, Vehicle::GetEngine(), VehicleSpriteSeq::IsValid(), Engine::original_image_index, VehicleSpriteSeq::Set(), Vehicle::spritenum, and VehicleCargoList::StoredCount().

Referenced by DrawRoadVehImage().

◆ GetMaxTrackSpeed()

uint16_t RoadVehicle::GetMaxTrackSpeed ( ) const
inlineprotected

Gets the maximum speed allowed by the track for this vehicle.

Returns
Since roads don't limit road vehicle speed, it returns always zero.

Definition at line 273 of file roadveh.h.

References GetRoadTypeInfo(), RoadTypeInfo::max_speed, and Vehicle::tile.

◆ GetMaxWeight()

uint16_t RoadVehicle::GetMaxWeight ( ) const
overrideprotectedvirtual

Calculates the weight value that this vehicle will have when fully loaded with its current cargo.

Returns
Weight value in tonnes.

Reimplemented from Vehicle.

Definition at line 1757 of file roadveh_cmd.cpp.

References Vehicle::cargo_type, Vehicle::engine_type, CargoSpec::Get(), Vehicle::GetEngine(), Vehicle::IsArticulatedPart(), and PROP_ROADVEH_WEIGHT.

◆ GetOrderStationLocation()

TileIndex RoadVehicle::GetOrderStationLocation ( StationID  station)
overridevirtual

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
stationthe station to make the next location of the vehicle.
Returns
the location (tile) to aim for.

Reimplemented from Vehicle.

Definition at line 583 of file roadveh_cmd.cpp.

References CanVehicleUseStation(), SpecializedStation< Station, false >::Get(), Vehicle::IncrementRealOrderIndex(), Vehicle::last_station_visited, and BaseStation::xy.

◆ GetPower()

uint16_t RoadVehicle::GetPower ( ) const
inlineprotected

Allows to know the power value that this vehicle will use.

Returns
Power value from the engine in HP, or zero if the vehicle is not powered.

Definition at line 149 of file roadveh.h.

References Vehicle::engine_type, Vehicle::IsArticulatedPart(), and PROP_ROADVEH_POWER.

◆ GetPoweredPartPower()

uint16_t RoadVehicle::GetPoweredPartPower ( const RoadVehicle ) const
inlineprotected

Returns a value if this articulated part is powered.

Returns
Zero, because road vehicles don't have powered parts.

Definition at line 163 of file roadveh.h.

◆ GetRollingFriction()

uint32_t RoadVehicle::GetRollingFriction ( ) const
inlineprotected

Returns the rolling friction coefficient of this vehicle.

Returns
Rolling friction coefficient in [1e-4].

Definition at line 241 of file roadveh.h.

References GetCurrentSpeed().

◆ GetRunningCost()

Money RoadVehicle::GetRunningCost ( ) const
overridevirtual

Gets the running cost of a vehicle.

Returns
the vehicle's running cost

Reimplemented from Vehicle.

Definition at line 1632 of file roadveh_cmd.cpp.

References Vehicle::GetEngine(), Engine::GetGRF(), GetPrice(), and PROP_ROADVEH_RUNNING_COST_FACTOR.

Referenced by OnNewEconomyDay().

◆ GetSlopeSteepness()

uint32_t RoadVehicle::GetSlopeSteepness ( ) const
inlineprotected

Returns the slope steepness used by this vehicle.

Returns
Slope steepness used by the vehicle.

Definition at line 264 of file roadveh.h.

References _settings_game, VehicleSettings::roadveh_slope_steepness, and GameSettings::vehicle.

◆ GetTractiveEffort()

uint8_t RoadVehicle::GetTractiveEffort ( ) const
inlineprotected

Allows to know the tractive effort value that this vehicle will use.

Returns
Tractive effort value from the engine.

Definition at line 195 of file roadveh.h.

References Vehicle::engine_type, and PROP_ROADVEH_TRACTIVE_EFFORT.

◆ GetVehicleTrackdir()

Trackdir RoadVehicle::GetVehicleTrackdir ( ) const
overridevirtual

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 from Vehicle.

Definition at line 1735 of file roadveh_cmd.cpp.

References DiagDirToDiagTrackdir(), Vehicle::direction, DirToDiagDir(), GetBayRoadStopDir(), GetRoadDepotDirection(), INVALID_TRACKDIR, IsBayRoadStopTile(), IsInDepot(), IsReversingRoadTrackdir(), RVSB_TRACKDIR_MASK, state, Vehicle::vehstatus, and VS_CRASHED.

Referenced by CYapfFollowRoadT< Types >::SetOriginFromVehiclePos(), and YapfRoadVehicleFindNearestDepot().

◆ GetWeight()

uint16_t RoadVehicle::GetWeight ( ) const
inlineprotected

Allows to know the weight value that this vehicle will use.

Returns
Weight value from the engine in tonnes.

Definition at line 172 of file roadveh.h.

References Vehicle::cargo, Vehicle::cargo_type, Vehicle::engine_type, CargoSpec::Get(), Vehicle::IsArticulatedPart(), PROP_ROADVEH_WEIGHT, and VehicleCargoList::StoredCount().

◆ HasToUseGetSlopePixelZ()

bool RoadVehicle::HasToUseGetSlopePixelZ ( )
inlineprotected

Road vehicles have to use GetSlopePixelZ() to compute their height if they are reversing because in that case, their direction is not parallel with the road.

It is safe to return true even if it is not reversing.

Returns
are we (possibly) reversing?

Definition at line 297 of file roadveh.h.

References Vehicle::direction, SpecializedVehicle< T, Type >::First(), IsReversingRoadTrackdir(), SpecializedVehicle< T, Type >::Next(), RVSB_TRACKDIR_MASK, and state.

◆ IsBus()

bool RoadVehicle::IsBus ( ) const

Check whether a roadvehicle is a bus.

Returns
true if bus

Definition at line 82 of file roadveh_cmd.cpp.

References Vehicle::cargo_type, CC_PASSENGERS, IsCargoInClass(), and Vehicle::IsFrontEngine().

Referenced by GetVehicleCannotUseStationReason(), RoadFindPathToDest(), and RoadVehArrivesAt().

◆ IsInDepot()

bool RoadVehicle::IsInDepot ( ) const
inlineoverridevirtual

Check whether the vehicle is in the depot.

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

Reimplemented from Vehicle.

Definition at line 128 of file roadveh.h.

References RVSB_IN_DEPOT.

Referenced by CmdTurnRoadVeh(), and GetVehicleTrackdir().

◆ IsPrimaryVehicle()

bool RoadVehicle::IsPrimaryVehicle ( ) const
inlineoverridevirtual

Whether this is the primary vehicle in the chain.

Reimplemented from Vehicle.

Definition at line 122 of file roadveh.h.

References Vehicle::IsFrontEngine().

Referenced by CmdTurnRoadVeh().

◆ MarkDirty()

void RoadVehicle::MarkDirty ( )
overridevirtual

Marks the vehicles to be redrawn and updates cached variables.

This method marks the area of the vehicle on the screen as dirty. It can be use to repaint the vehicle.

Reimplemented from Vehicle.

Definition at line 396 of file roadveh_cmd.cpp.

References GroundVehicle< RoadVehicle, VEH_ROAD >::CargoChanged(), Vehicle::colourmap, SpecializedVehicle< T, Type >::Next(), and SpecializedVehicle< T, Type >::UpdateViewport().

◆ OnNewCalendarDay()

void RoadVehicle::OnNewCalendarDay ( )
overridevirtual

Calandar day handler.

Reimplemented from Vehicle.

Definition at line 1703 of file roadveh_cmd.cpp.

References AgeVehicle(), and Vehicle::IsFrontEngine().

◆ OnNewEconomyDay()

◆ SetDestTile()

void RoadVehicle::SetDestTile ( TileIndex  tile)
overridevirtual

Reimplemented from Vehicle.

Definition at line 1657 of file roadveh_cmd.cpp.

◆ Tick()

bool RoadVehicle::Tick ( )
overridevirtual

Calls the tick handler of the vehicle.

Returns
is this vehicle still valid?

Reimplemented from Vehicle.

Definition at line 1643 of file roadveh_cmd.cpp.

References Vehicle::IsFrontEngine(), PFE_GL_ROADVEHS, Vehicle::running_ticks, Vehicle::tick_counter, Vehicle::vehstatus, and VS_STOPPED.

◆ TileMayHaveSlopedTrack()

bool RoadVehicle::TileMayHaveSlopedTrack ( ) const
inlineprotected

Checks if the vehicle is at a tile that can be sloped.

Returns
True if the tile can be sloped.

Definition at line 282 of file roadveh.h.

References GetTileTrackStatus(), Vehicle::tile, TRACK_BIT_X, TRACK_BIT_Y, TrackStatusToTrackBits(), and TRANSPORT_ROAD.

◆ UpdateDeltaXY()

void RoadVehicle::UpdateDeltaXY ( )
overridevirtual

◆ UpdateSpeed()

int RoadVehicle::UpdateSpeed ( )

This function looks at the vehicle and updates its speed (cur_speed and subspeed) variables.

Furthermore, it returns the distance that the vehicle can drive this tick. Vehicle::GetAdvanceDistance() determines the distance to drive before moving a step on the map.

Returns
distance to drive.

Definition at line 726 of file roadveh_cmd.cpp.

References _settings_game, AS_BRAKE, GroundVehicle< RoadVehicle, VEH_ROAD >::DoUpdateSpeed(), GroundVehicle< RoadVehicle, VEH_ROAD >::GetAcceleration(), GetAccelerationStatus(), GetCurrentMaxSpeed(), overtaking, VehicleSettings::roadveh_acceleration_model, and GameSettings::vehicle.

Friends And Related Symbol Documentation

◆ GroundVehicle< RoadVehicle, VEH_ROAD >

friend struct GroundVehicle< RoadVehicle, VEH_ROAD >
friend

Definition at line 115 of file roadveh.h.

Field Documentation

◆ blocked_ctr

uint16_t RoadVehicle::blocked_ctr

Definition at line 102 of file roadveh.h.

◆ compatible_roadtypes

◆ crashed_ctr

uint16_t RoadVehicle::crashed_ctr

Animation counter when the vehicle has crashed.

See also
RoadVehIsCrashed

Definition at line 105 of file roadveh.h.

Referenced by Crash(), DisasterTick_Ufo(), and RoadVehIsCrashed().

◆ disaster_vehicle

VehicleID RoadVehicle::disaster_vehicle = INVALID_VEHICLE

NOSAVE: Disaster vehicle targetting this vehicle.

Definition at line 109 of file roadveh.h.

Referenced by AfterLoadVehiclesPhase2(), DisasterTick_Ufo(), and Vehicle::PreDestructor().

◆ frame

uint8_t RoadVehicle::frame

Definition at line 101 of file roadveh.h.

◆ overtaking

uint8_t RoadVehicle::overtaking

Set to RVSB_DRIVE_SIDE when overtaking, otherwise 0.

Definition at line 103 of file roadveh.h.

Referenced by CmdTurnRoadVeh(), and UpdateSpeed().

◆ overtaking_ctr

uint8_t RoadVehicle::overtaking_ctr

The length of the current overtake attempt.

Definition at line 104 of file roadveh.h.

◆ path

RoadVehPathCache RoadVehicle::path

Cached path.

Definition at line 99 of file roadveh.h.

Referenced by SlVehicleRoadVehPath::GetVector(), and RoadFindPathToDest().

◆ reverse_ctr

uint8_t RoadVehicle::reverse_ctr

Definition at line 106 of file roadveh.h.

◆ roadtype

◆ state


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