10 #ifndef VEHICLE_BASE_H
11 #define VEHICLE_BASE_H
28 const uint TILE_AXIAL_DISTANCE = 192;
29 const uint TILE_CORNER_DISTANCE = 128;
77 auto operator<=>(
const NewGRFCache &)
const =
default;
141 return this->count == other.count && MemCmpT<PalSpriteID>(this->seq, other.seq, this->count) == 0;
146 return !this->operator==(other);
154 return this->count != 0;
171 this->seq[0].
sprite = sprite;
172 this->seq[0].
pal = 0;
180 this->count = src.count;
181 for (uint i = 0; i < src.count; ++i) {
183 this->seq[i].
pal = 0;
188 void Draw(
int x,
int y,
PaletteID default_pal,
bool force_pal)
const;
246 typedef std::list<RefitDesc> RefitList;
262 friend void Ptrs_VEHS();
430 return (this->direction & 1) ? speed : speed * 3 / 4;
447 return speed * 3 / 4;
459 return (this->direction & 1) ? TILE_AXIAL_DISTANCE : TILE_CORNER_DISTANCE * 2;
506 for (
Vehicle *u =
this; u !=
nullptr; u = u->
Next()) {
507 u->InvalidateNewGRFCache();
562 assert(
this == this->
First());
572 virtual bool Tick() {
return true; };
584 void ShiftDates(TimerGameEconomy::Date interval);
591 virtual uint
Crash(
bool flooded =
false);
654 while (v->
Next() !=
nullptr) v = v->
Next();
665 while (v->
Next() !=
nullptr) v = v->
Next();
678 for (
int i = 0; i != n && v !=
nullptr; i--) v = v->
Previous();
680 for (
int i = 0; i != n && v !=
nullptr; i++) v = v->
Next();
694 for (
int i = 0; i != n && v !=
nullptr; i--) v = v->
Previous();
696 for (
int i = 0; i != n && v !=
nullptr; i++) v = v->
Next();
798 virtual TileIndex GetCargoTile()
const {
return this->
tile; }
820 inline uint16_t GetServiceInterval()
const {
return this->
service_interval; }
822 inline void SetServiceInterval(uint16_t interval) { this->
service_interval = interval; }
1045 typedef size_t difference_type;
1046 typedef std::forward_iterator_tag iterator_category;
1050 this->order = (this->list ==
nullptr) ?
nullptr : this->list->
GetFirstOrder();
1053 bool operator==(
const OrderIterator &other)
const {
return this->order == other.order; }
1054 bool operator!=(
const OrderIterator &other)
const {
return !(*
this == other); }
1055 Order * operator*()
const {
return this->order; }
1058 this->prev = (this->prev ==
nullptr) ? this->list->
GetFirstOrder() : this->prev->
next;
1059 this->order = (this->prev ==
nullptr) ?
nullptr : this->prev->
next;
1077 bool empty() {
return this->begin() == this->end(); }
1094 template <
class T, VehicleType Type>
1217 assert(v->
type == Type);
1228 assert(v->
type == Type);
1229 return (
const T *)v;
1239 bool sprite_has_changed =
false;
1246 if (update_delta) ((T *)
this)->T::UpdateDeltaXY();
1259 sprite_has_changed =
true;
1274 if (force_update || sprite_has_changed) {
Properties for front vehicles/consists.
constexpr debug_inline bool HasBit(const T x, const uint8_t y)
Checks if a bit in a value is set.
constexpr T AssignBit(T &x, const uint8_t y, bool value)
Assigns a bit in a variable.
uint8_t CargoID
Cargo slots to indicate a cargo type within a game.
Base class for cargo packets.
Common return value for all commands.
Minimal stack that uses a pool to avoid pointers.
uint64_t TickCounter
The type that the tick counter is stored in.
CargoList that is used for vehicles.
Types related to commands.
DoCommandFlag
List of flags for a command.
Owner
Enum for all companies/owners.
Direction
Defines the 8 directions on the map.
ExpensesType
Types of expenses.
@ EXPENSES_OTHER
Other expenses.
Types related to engines.
uint16_t EngineID
Unique identification number of an engine.
uint32_t SpriteID
The number of a sprite, without mapping bits and colourtables.
uint32_t PaletteID
The number of the palette.
virtual void MarkDirty()
Marks the vehicles to be redrawn and updates cached variables.
uint16_t GroupID
Type for all group identifiers.
Functions related to memory operations.
bool _network_dedicated
are we a dedicated server?
Basic functions/variables used all over the place.
void InvalidateVehicleOrder(const Vehicle *v, int data)
Updates the widgets of a vehicle which contains the order-data.
Functions related to orders.
uint8_t VehicleOrderID
The index of an order within its current vehicle (not pool related)
Functions/types related to saving and loading games.
Various front vehicle properties that are preserved when autoreplacing, using order-backup or switchi...
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 service_interval
The interval for (automatic) servicing; either in days or %.
void CopyConsistPropertiesFrom(const BaseConsist *src)
Copy properties of other BaseConsist.
uint16_t vehicle_flags
Used for gradual loading and other miscellaneous things (.
VehicleType type
Type of vehicle.
Helper class to perform the cargo payment.
Structure to return information about the closest depot location, and whether it could be found.
DestinationID destination
The DestinationID as used for orders.
Dynamic data of a loaded NewGRF.
Cached, frequently calculated values.
Cache for vehicle sprites and values relating to whether they should be updated before drawing,...
bool revalidate_before_draw
We need to do a GetImage() and check bounds before drawing this sprite.
VehicleSpriteSeq sprite_seq
Vehicle appearance.
bool is_viewport_candidate
This vehicle can potentially be drawn on a viewport.
Direction last_direction
Last direction we obtained sprites for.
Rect old_coord
Co-ordinates from the last valid bounding box.
Cached often queried (NewGRF) values.
uint32_t position_in_vehicle
Cache for NewGRF var 4D.
uint32_t position_consist_length
Cache for NewGRF var 40.
uint32_t consist_cargo_information
Cache for NewGRF var 42. (Note: The cargotype is untranslated in the cache because the accessing GRF ...
uint8_t cache_valid
Bitset that indicates which cache values are valid.
uint32_t company_information
Cache for NewGRF var 43.
uint32_t position_same_id_length
Cache for NewGRF var 41.
Shared order list linking together the linked list of orders and the list of vehicles sharing this or...
StationIDStack GetNextStoppingStation(const Vehicle *v, const Order *first=nullptr, uint hops=0) const
Recursively determine the next deterministic station to stop at.
Order * GetLastOrder() const
Get the last order of the order chain.
Order * GetOrderAt(int index) const
Get a certain order of the order chain.
VehicleOrderID GetNumOrders() const
Get number of orders in the order list.
VehicleOrderID GetNumManualOrders() const
Get number of manually added orders in the order list.
Order * GetFirstOrder() const
Get the first order of the order chain.
Vehicle * GetFirstSharedVehicle() const
Get the first vehicle of this vehicle chain.
bool IsShared() const
Is this a shared order list?
Order * next
Pointer to next order. If nullptr, end of list.
Combination of a palette sprite and a 'real' sprite.
SpriteID sprite
The 'real' sprite.
PaletteID pal
The palette (use PAL_NONE) if not needed)
Base class for all PoolItems.
Tindex index
Index of this pool item.
static Titem * Get(size_t index)
Returns Titem with given index.
static bool IsValidID(size_t index)
Tests whether given index can be used to get valid (non-nullptr) Titem.
Base class for all pools.
Specification of a rectangle with absolute coordinates of all edges.
Simulated cargo type and capacity for prediction of future links.
CargoID cargo
Cargo type the vehicle will be carrying.
uint16_t capacity
Capacity the vehicle will have.
uint16_t remaining
Capacity remaining from before the previous refit.
Class defining several overloaded accessors so we don't have to cast vehicle types that often.
T * Previous() const
Get previous vehicle in the chain.
T * GetLastEnginePart()
Get the last part of an articulated engine.
T * GetPrevVehicle() const
Get the previous real (non-articulated part) vehicle in the consist.
T * Last()
Get the last vehicle in the chain.
static T * From(Vehicle *v)
Converts a Vehicle to SpecializedVehicle with type checking.
T * GetNextVehicle() const
Get the next real (non-articulated part) vehicle in the consist.
SpecializedVehicle()
Set vehicle type correctly.
T * Next() const
Get next vehicle in the chain.
void UpdateViewport(bool force_update, bool update_delta)
Update vehicle sprite- and position caches.
T * GetFirstEnginePart()
Get the first part of an articulated engine.
T * GetNextArticulatedPart()
Get the next part of an articulated engine.
static Pool::IterateWrapper< T > Iterate(size_t from=0)
Returns an iterable ensemble of all valid vehicles of type T.
static bool IsValidID(size_t index)
Tests whether given index is a valid index for vehicle of this type.
T * First() const
Get the first vehicle in the chain.
SpecializedVehicle< T, Type > SpecializedVehicleBase
Our type.
static const VehicleType EXPECTED_TYPE
Specialized type.
static T * GetIfValid(size_t index)
Returns vehicle if the index is a valid index for this vehicle type.
static T * Get(size_t index)
Gets vehicle with given index.
Cached often queried values common to all vehicles.
uint8_t cached_vis_effect
Visual effect to show (see VisualEffect)
uint16_t cached_cargo_age_period
Number of ticks before carried cargo is aged.
uint16_t cached_max_speed
Maximum speed of the consist (minimum of the max speed of all vehicles in the consist).
Sprite sequence for a vehicle part.
bool IsValid() const
Check whether the sequence contains any sprites.
void GetBounds(Rect *bounds) const
Determine shared bounds of all sprites.
void Set(SpriteID sprite)
Assign a single sprite to the sequence.
void Clear()
Clear all information.
void CopyWithoutPalette(const VehicleSpriteSeq &src)
Copy data from another sprite sequence, while dropping all recolouring information.
void Draw(int x, int y, PaletteID default_pal, bool force_pal) const
Draw the sprite sequence.
Iterable ensemble of orders.
Iterator to iterate orders Supports deletion of current order.
Money GetDisplayProfitThisYear() const
Gets the profit vehicle had this year.
CargoPayment * cargo_payment
The cargo payment we're currently in.
const Vehicle * GetFirstEnginePart() const
Get the first part of an articulated engine.
EngineID engine_type
The type of engine used for this vehicle.
Vehicle * Move(int n)
Get the vehicle at offset n of this vehicle chain.
uint16_t cargo_age_counter
Ticks till cargo is aged next.
virtual int GetDisplaySpeed() const
Gets the speed in km-ish/h that can be sent into SetDParam for string processing.
Vehicle * Previous() const
Get the previous vehicle of this vehicle.
static uint GetAdvanceSpeed(uint speed)
Determines the effective vehicle movement speed.
int32_t z_pos
z coordinate.
uint16_t & GetGroundVehicleFlags()
Access the ground vehicle flags of the vehicle.
Direction direction
facing
void ShiftDates(TimerGameEconomy::Date interval)
Shift all dates by given interval.
friend void AfterLoadVehiclesPhase1(bool part_of_load)
So we can set the previous and first pointers while loading.
StationIDStack GetNextStoppingStation() const
Get the next station the vehicle will stop at.
TimerGameEconomy::Date economy_age
Age in economy days.
bool IsOrderListShared() const
Check if we share our orders with another vehicle.
Vehicle * GetNextArticulatedPart() const
Get the next part of an articulated engine.
const Engine * GetEngine() const
Retrieves the engine of the vehicle.
void IncrementRealOrderIndex()
Advanced cur_real_order_index to the next real order, keeps care of the wrap-around and invalidates t...
virtual uint Crash(bool flooded=false)
Crash the (whole) vehicle chain.
bool IsStoppedInDepot() const
Check whether the vehicle is in the depot and stopped.
bool HasDepotOrder() const
Checks if a vehicle has a depot in its order list.
void LeaveStation()
Perform all actions when leaving a station.
virtual bool IsChainInDepot() const
Check whether the whole vehicle chain is in the depot.
void AddToShared(Vehicle *shared_chain)
Adds this vehicle to a shared vehicle chain.
VehicleCargoList cargo
The cargo this vehicle is carrying.
Vehicle * First() const
Get the first vehicle of this vehicle chain.
uint8_t x_extent
x-extent of vehicle bounding box
Vehicle ** hash_tile_prev
NOSAVE: Previous vehicle in the tile location hash.
bool HasUnbunchingOrder() const
Check if the current vehicle has an unbunching order.
TimerGameEconomy::Date date_of_last_service
Last economy date the vehicle had a service at a depot.
uint16_t cargo_cap
total capacity
StationID last_loading_station
Last station the vehicle has stopped at and could possibly leave from with any cargo loaded.
VehicleOrderID GetNumOrders() const
Get the number of orders this vehicle has.
uint8_t subtype
subtype (Filled with values from AircraftSubType/DisasterSubType/EffectVehicleType/GroundVehicleSubty...
Vehicle * GetLastEnginePart()
Get the last part of an articulated engine.
virtual void UpdateDeltaXY()
Updates the x and y offsets and the size of the sprite used for this vehicle.
uint16_t random_bits
Bits used for randomized variational spritegroups.
void ReleaseUnitNumber()
Release the vehicle's unit number.
void UpdateBoundingBoxCoordinates(bool update_cache) const
Update the bounding box co-ordinates of the vehicle.
uint8_t day_counter
Increased by one for each day.
void HandleLoading(bool mode=false)
Handle the loading of the vehicle; when not it skips through dummy orders and does nothing in all oth...
Money profit_this_year
Profit this year << 8, low 8 bits are fract.
virtual void GetImage([[maybe_unused]] Direction direction, [[maybe_unused]] EngineImageType image_type, [[maybe_unused]] VehicleSpriteSeq *result) const
Gets the sprite to show for the given direction.
bool HasArticulatedPart() const
Check if an engine has an articulated part.
SpriteID colourmap
NOSAVE: cached colour mapping.
uint8_t breakdown_ctr
Counter for managing breakdown events.
uint GetOldAdvanceSpeed(uint speed)
Determines the effective direction-specific vehicle movement speed.
uint8_t breakdown_delay
Counter for managing breakdown length.
uint GetAdvanceDistance()
Determines the vehicle "progress" needed for moving a step.
GroupID group_id
Index of group Pool array.
friend bool LoadOldVehicle(LoadgameState *ls, int num)
So we can set the proper next pointer while loading.
CommandCost SendToDepot(DoCommandFlag flags, DepotCommand command)
Send this vehicle to the depot using the given command(s).
virtual int GetDisplayMaxSpeed() const
Gets the maximum speed in km-ish/h that can be sent into SetDParam for string processing.
void IncrementImplicitOrderIndex()
Increments cur_implicit_order_index, keeps care of the wrap-around and invalidates the GUI.
uint8_t z_extent
z-extent of vehicle bounding box
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 again...
Vehicle * first
NOSAVE: pointer to the first vehicle in the chain.
void CancelReservation(StationID next, Station *st)
Return all reserved cargo packets to the station and reset all packets staged for transfer.
Money profit_last_year
Profit last year << 8, low 8 bits are fract.
virtual TileIndex GetOrderStationLocation([[maybe_unused]] StationID station)
Determine the location for the station where the vehicle goes to next.
bool IsEngineCountable() const
Check if a vehicle is counted in num_engines in each company struct.
Order * GetOrder(int index) const
Returns order 'index' of a vehicle or nullptr when it doesn't exists.
virtual ~Vehicle()
We want to 'destruct' the right class.
uint8_t subspeed
fractional speed
bool IsArticulatedPart() const
Check if the vehicle is an articulated part of an engine.
Vehicle * GetPrevVehicle() const
Get the previous real (non-articulated part) vehicle in the consist.
bool NeedsAutorenewing(const Company *c, bool use_renew_setting=true) const
Function to tell if a vehicle needs to be autorenewed.
void UpdateVisualEffect(bool allow_power_change=true)
Update the cached visual effect.
Vehicle * Last()
Get the last vehicle of this vehicle chain.
void LeaveUnbunchingDepot()
Leave an unbunching depot and calculate the next departure time for shared order vehicles.
Vehicle * GetFirstEnginePart()
Get the first part of an articulated engine.
int8_t y_offs
y offset for vehicle sprite
Vehicle * Next() const
Get the next vehicle of this vehicle.
debug_inline bool IsFrontEngine() const
Check if the vehicle is a front engine.
uint8_t acceleration
used by train & aircraft
Vehicle * previous_shared
NOSAVE: pointer to the previous vehicle in the shared order chain.
VehicleOrderID GetNumManualOrders() const
Get the number of manually added orders this vehicle has.
int8_t trip_occupancy
NOSAVE: Occupancy of vehicle of the current trip (updated after leaving a station).
int8_t x_bb_offs
x offset of vehicle bounding box
Order current_order
The current order (+ status, like: loading)
void PreDestructor()
Destroy all stuff that (still) needs the virtual functions to work properly.
TimerGameTick::TickCounter last_loading_tick
Last TimerGameTick::counter tick that the vehicle has stopped at a station and could possibly leave w...
CargoID cargo_type
type of cargo this vehicle is carrying
void HandlePathfindingResult(bool path_found)
Handle the pathfinding result, especially the lost status.
int8_t x_offs
x offset for vehicle sprite
int32_t y_pos
y coordinate.
int32_t x_pos
x coordinate.
const GRFFile * GetGRF() const
Retrieve the NewGRF the vehicle is tied to.
OrderList * orders
Pointer to the order list for this vehicle.
const Vehicle * Move(int n) const
Get the vehicle at offset n of this vehicle chain.
uint32_t GetDisplayMinPowerToWeight() const
Calculates the minimum power-to-weight ratio using the maximum weight of the ground vehicle.
const Vehicle * Last() const
Get the last vehicle of this vehicle chain.
uint8_t y_extent
y-extent of vehicle bounding box
virtual ClosestDepot FindClosestDepot()
Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should...
void UpdateViewport(bool dirty)
Update the vehicle on the viewport, updating the right hash and setting the new coordinates.
Order * old_orders
Only used during conversion of old save games.
Money value
Value of the vehicle.
bool MarkAllViewportsDirty() const
Marks viewports dirty where the vehicle's image is.
uint16_t refit_cap
Capacity left over from before last refit.
void InvalidateNewGRFCache()
Invalidates cached NewGRF variables.
uint8_t waiting_triggers
Triggers to be yet matched before rerandomizing the random bits.
friend void FixOldVehicles()
Convert the old style vehicles into something that resembles the old new style savegames.
VehicleCache vcache
Cache of often used vehicle values.
uint32_t motion_counter
counter to occasionally play a vehicle sound.
NewGRFCache grf_cache
Cache of often used calculated NewGRF values.
uint32_t GetGRFID() const
Retrieve the GRF ID of the NewGRF the vehicle is tied to.
Order * GetFirstOrder() const
Get the first order of the vehicles order list.
GroundVehicleCache * GetGroundVehicleCache()
Access the ground vehicle cache of the vehicle.
virtual void OnNewEconomyDay()
Calls the new economy day handler of the vehicle.
Vehicle ** hash_tile_current
NOSAVE: Cache of the current hash chain.
virtual void OnNewCalendarDay()
Calls the new calendar day handler of the vehicle.
int8_t y_bb_offs
y offset of vehicle bounding box
virtual int GetCurrentMaxSpeed() const
Calculates the maximum speed of the vehicle under its current conditions.
virtual ExpensesType GetExpenseType([[maybe_unused]] bool income) const
Sets the expense type associated to this vehicle type.
bool HasFullLoadOrder() const
Check if the current vehicle has a full load order.
virtual void PlayLeaveStationSound([[maybe_unused]] bool force=false) const
Play the sound associated with leaving the station.
virtual bool IsPrimaryVehicle() const
Whether this is the primary vehicle in the chain.
void BeginLoading()
Prepare everything to begin the loading when arriving at a station.
uint16_t load_unload_ticks
Ticks to wait before starting next cycle.
Money GetDisplayProfitLastYear() const
Gets the profit vehicle had last year.
Vehicle * hash_tile_next
NOSAVE: Next vehicle in the tile location hash.
uint8_t spritenum
currently displayed sprite index 0xfd == custom sprite, 0xfe == custom second head sprite 0xff == res...
uint16_t cur_speed
current speed
Vehicle * previous
NOSAVE: pointer to the previous vehicle in the chain.
uint8_t cargo_subtype
Used for livery refits (NewGRF variations)
bool HasEngineType() const
Check whether Vehicle::engine_type has any meaning.
TimerGameCalendar::Date age
Age in calendar days.
bool IsWaitingForUnbunching() const
Check whether a vehicle inside a depot is waiting for unbunching.
TextEffectID fill_percent_te_id
a text-effect id to a loading indicator object
IterateWrapper Orders() const
Returns an iterable ensemble of orders of a vehicle.
Money GetDisplayRunningCost() const
Gets the running cost of a vehicle that can be sent into SetDParam for string processing.
void SetNext(Vehicle *next)
Set the next vehicle of this vehicle.
Vehicle * FirstShared() const
Get the first vehicle of this vehicle chain.
uint8_t breakdowns_since_last_service
Counter for the amount of breakdowns.
Vehicle * next
pointer to the next vehicle in the chain
TimerGameCalendar::Date max_age
Maximum age.
MutableSpriteCache sprite_cache
Cache of sprites and values related to recalculating them, see MutableSpriteCache.
uint16_t reliability
Reliability.
uint32_t GetDisplayMaxWeight() const
Calculates the maximum weight of the ground vehicle when loaded.
Vehicle * NextShared() const
Get the next vehicle of the shared vehicle chain.
void RemoveFromShared()
Removes the vehicle from the shared order list.
bool HandleBreakdown()
Handle all of the aspects of a vehicle breakdown This includes adding smoke and sounds,...
Vehicle * GetNextVehicle() const
Get the next real (non-articulated part) vehicle in the consist.
debug_inline bool IsGroundVehicle() const
Check if the vehicle is a ground vehicle.
uint8_t progress
The percentage (if divided by 256) this vehicle already crossed the tile unit.
void UpdatePositionAndViewport()
Update the position of the vehicle, and update the viewport.
Vehicle(VehicleType type=VEH_INVALID)
Vehicle constructor.
Rect coord
NOSAVE: Graphical bounding box of the vehicle, i.e. what to redraw on moves.
uint16_t reliability_spd_dec
Reliability decrease speed.
uint8_t tick_counter
Increased by one for each tick.
void SkipToNextRealOrderIndex()
Advance cur_real_order_index to the next real order.
virtual bool IsInDepot() const
Check whether the vehicle is in the depot.
TileIndex tile
Current tile index.
virtual bool Tick()
Calls the tick handler of the vehicle.
TileIndex dest_tile
Heading for this tile.
void CopyVehicleConfigAndStatistics(Vehicle *src)
Copy certain configurations and statistics of a vehicle after successful autoreplace/renew The functi...
bool NeedsServicing() const
Check if the vehicle needs to go to a depot in near future (if a opportunity presents itself) for ser...
bool HasConditionalOrder() const
Check if the current vehicle has a conditional order.
virtual uint16_t GetMaxWeight() const
Calculates the weight value that this vehicle will have when fully loaded with its current cargo.
void UpdatePosition()
Update the position of the vehicle.
virtual Money GetRunningCost() const
Gets the running cost of a vehicle.
StationID last_station_visited
The last station we stopped at.
void ResetRefitCaps()
Reset all refit_cap in the consist to cargo_cap.
void InvalidateNewGRFCacheOfChain()
Invalidates cached NewGRF variables of all vehicles in the chain (after the current vehicle)
Vehicle * PreviousShared() const
Get the previous vehicle of the shared vehicle chain.
uint8_t breakdown_chance
Current chance of breakdowns.
void ShowVisualEffect() const
Draw visual effects (smoke and/or sparks) for a vehicle chain.
TimerGameCalendar::Year build_year
Year the vehicle has been built.
Owner owner
Which company owns the vehicle?
Order * GetLastOrder() const
Returns the last order of a vehicle, or nullptr if it doesn't exists.
UnitID unitnumber
unit number, for display purposes only
Vehicle * next_shared
pointer to the next vehicle that shares the order
bool NeedsAutomaticServicing() const
Checks if the current order should be interrupted for a service-in-depot order.
void DeleteUnreachedImplicitOrders()
Delete all implicit orders which were not reached.
uint8_t running_ticks
Number of ticks this vehicle was not stopped this day.
Vehicle ** hash_viewport_prev
NOSAVE: Previous vehicle in the visual location hash.
Vehicle * hash_viewport_next
NOSAVE: Next vehicle in the visual location hash.
virtual Trackdir GetVehicleTrackdir() const
Returns the Trackdir on which the vehicle is currently located.
void UpdateRealOrderIndex()
Skip implicit orders until cur_real_order_index is a non-implicit order.
Functions related to text effects.
constexpr TileIndex INVALID_TILE
The very nice invalid tile marker.
Definition of the game-calendar-timer.
All types related to tracks.
Trackdir
Enumeration for tracks and directions.
@ INVALID_TRACKDIR
Flag for an invalid trackdir.
Base types related to transport.
uint16_t UnitID
Type for the company global vehicle unit number.
VehiclePool _vehicle_pool("Vehicle")
The pool with all our precious vehicles.
GroundVehicleSubtypeFlags
Enum to handle ground vehicle subtypes.
@ GVSF_ARTICULATED_PART
Articulated part of an engine.
@ GVSF_FRONT
Leading engine of a consist.
@ GVSF_MULTIHEADED
Engine is multiheaded (not used for road vehicles).
@ GVSF_FREE_WAGON
First in a wagon chain (in depot) (not used for road vehicles).
@ GVSF_WAGON
Wagon (not used for road vehicles).
@ GVSF_ENGINE
Engine that can be front engine, but might be placed behind another engine (not used for road vehicle...
bool LoadOldVehicle(LoadgameState *ls, int num)
Load the vehicles of an old style savegame.
VehicleFlags
Bit numbers in Vehicle::vehicle_flags.
@ VF_STOP_LOADING
Don't load anymore during the next load cycle.
@ VF_SERVINT_IS_PERCENT
Service interval is percent.
@ VF_BUILT_AS_PROTOTYPE
Vehicle is a prototype (accepted as exclusive preview).
@ VF_CARGO_UNLOADING
Vehicle is unloading cargo.
@ VF_AUTOFILL_TIMETABLE
Whether the vehicle should fill in the timetable automatically.
@ VF_PATHFINDER_LOST
Vehicle's pathfinder is lost.
@ VF_AUTOFILL_PRES_WAIT_TIME
Whether non-destructive auto-fill should preserve waiting times.
@ VF_LOADING_FINISHED
Vehicle has finished loading.
@ VF_SERVINT_IS_CUSTOM
Service interval is custom.
@ VF_TIMETABLE_STARTED
Whether the vehicle has started running on the timetable yet.
VisualEffectSpawnModel
Models for spawning visual effects.
@ VESM_ELECTRIC
Electric model.
@ VESM_DIESEL
Diesel model.
@ VESM_NONE
No visual effect.
void FixOldVehicles()
Convert the old style vehicles into something that resembles the old new style savegames.
NewGRFCacheValidValues
Bit numbers used to indicate which of the NewGRFCache values are valid.
@ NCVV_COMPANY_INFORMATION
This bit will be set if the NewGRF var 43 currently stored is valid.
@ NCVV_CONSIST_CARGO_INFORMATION
This bit will be set if the NewGRF var 42 currently stored is valid.
@ NCVV_POSITION_CONSIST_LENGTH
This bit will be set if the NewGRF var 40 currently stored is valid.
@ NCVV_POSITION_SAME_ID_LENGTH
This bit will be set if the NewGRF var 41 currently stored is valid.
@ NCVV_POSITION_IN_VEHICLE
This bit will be set if the NewGRF var 4D currently stored is valid.
@ NCVV_END
End of the bits.
VehStatus
Vehicle status bits in Vehicle::vehstatus.
@ VS_UNCLICKABLE
Vehicle is not clickable by the user (shadow vehicles).
@ VS_TRAIN_SLOWING
Train is slowing down.
@ VS_AIRCRAFT_BROKEN
Aircraft is broken down.
@ VS_SHADOW
Vehicle is a shadow vehicle.
@ VS_STOPPED
Vehicle is stopped by the player.
@ VS_HIDDEN
Vehicle is not visible.
@ VS_CRASHED
Vehicle is crashed.
@ VS_DEFPAL
Use default vehicle palette.
VisualEffect
Meaning of the various bits of the visual effect.
@ VE_TYPE_DEFAULT
Use default from engine class.
@ VE_TYPE_COUNT
Number of bits used for the effect type.
@ VE_OFFSET_CENTRE
Value of offset corresponding to a position above the centre of the vehicle.
@ VE_TYPE_ELECTRIC
Electric sparks.
@ VE_TYPE_START
First bit used for the type of effect.
@ VE_OFFSET_COUNT
Number of bits used for the offset.
@ VE_ADVANCED_EFFECT
Flag for advanced effects.
@ VE_DISABLE_EFFECT
Flag to disable visual effect.
@ VE_TYPE_STEAM
Steam plumes.
@ VE_TYPE_DIESEL
Diesel fumes.
@ VE_DEFAULT
Default value to indicate that visual effect should be based on engine class.
@ VE_OFFSET_START
First bit that contains the offset (0 = front, 8 = centre, 15 = rear)
@ VE_DISABLE_WAGON_POWER
Flag to disable wagon power.
Pool< Vehicle, VehicleID, 512, 0xFF000 > VehiclePool
A vehicle pool for a little over 1 million vehicles.
static const int32_t INVALID_COORD
Sentinel for an invalid coordinate.
EngineImageType
Visualisation contexts of vehicles and engines.
@ EIT_ON_MAP
Vehicle drawn in viewport.
VehicleType
Available vehicle types.
@ VEH_INVALID
Non-existing type of vehicle.
@ VEH_ROAD
Road vehicle type.
@ VEH_TRAIN
Train vehicle type.
DepotCommand
Flags for goto depot commands.