|
OpenTTD Source 20260206-master-g4d4e37dbf1
|
'Train' is either a loco or a wagon. More...
#include <train.h>
Public Member Functions | |
| Train (VehicleID index) | |
| ~Train () override | |
| We want to 'destruct' the right class. | |
| void | MarkDirty () override |
| Goods at the consist have changed, update the graphics, cargo, and acceleration. | |
| 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. | |
| void | PlayLeaveStationSound (bool force=false) const override |
| Play a sound for a train leaving the station. | |
| bool | IsPrimaryVehicle () const override |
| Whether this is the primary vehicle in the chain. | |
| void | GetImage (Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const override |
| Get the sprite to display the train. | |
| int | GetDisplaySpeed () const override |
| Gets the speed in km-ish/h that can be sent into string parameters for string processing. | |
| int | GetDisplayMaxSpeed () const override |
| Gets the maximum speed in km-ish/h that can be sent into string parameters for string processing. | |
| Money | GetRunningCost () const override |
| Get running cost for the train consist. | |
| int | GetCursorImageOffset () const |
| int | GetDisplayImageWidth (Point *offset=nullptr) const |
| Get the width of a train vehicle image in the GUI. | |
| bool | IsInDepot () const override |
| Check whether the vehicle is in the depot. | |
| bool | Tick () override |
| Update train vehicle data for a tick. | |
| void | OnNewCalendarDay () override |
| Calendar day handler. | |
| void | OnNewEconomyDay () override |
| Economy day handler. | |
| uint | Crash (bool flooded=false) override |
| The train vehicle crashed! | |
| Trackdir | GetVehicleTrackdir () const override |
| Get the tracks of the train vehicle. | |
| TileIndex | GetOrderStationLocation (StationID station) override |
| Get the location of the next station to visit. | |
| ClosestDepot | FindClosestDepot () override |
| Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should reverse. | |
| void | ReserveTrackUnderConsist () const |
| Tries to reserve track under whole train consist. | |
| uint16_t | GetCurveSpeedLimit () const |
| Computes train speed limit caused by curves. | |
| void | ConsistChanged (ConsistChangeFlags allowed_changes) |
| Recalculates the cached stuff of a train. | |
| int | UpdateSpeed () |
| This function looks at the vehicle and updates its speed (cur_speed and subspeed) variables. | |
| void | UpdateAcceleration () |
| Update acceleration of the train from the cached power and weight. | |
| int | GetCurrentMaxSpeed () const override |
| Calculates the maximum speed of the vehicle under its current conditions. | |
| Train * | GetNextUnit () const |
| Get the next real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist. | |
| Train * | GetPrevUnit () |
| Get the previous real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist. | |
| int | CalcNextVehicleOffset () const |
| Calculate the offset from this vehicle's center to the following center taking the vehicle lengths into account. | |
| VehicleAccelerationModel | GetAccelerationType () const |
| Allows to know the acceleration type of a vehicle. | |
| Public Member Functions inherited from GroundVehicle< Train, VEH_TRAIN > | |
| GroundVehicle (VehicleID index) | |
| 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< Train, Type > | |
| SpecializedVehicle (VehicleID index) | |
| Set vehicle type correctly. | |
| Train * | First () const |
| Get the first vehicle in the chain. | |
| Train * | Last () |
| Get the last vehicle in the chain. | |
| Train * | Next () const |
| Get next vehicle in the chain. | |
| Train * | Previous () const |
| Get previous vehicle in the chain. | |
| Train * | GetNextArticulatedPart () |
| Get the next part of an articulated engine. | |
| Train * | GetFirstEnginePart () |
| Get the first part of an articulated engine. | |
| Train * | GetLastEnginePart () |
| Get the last part of an articulated engine. | |
| Train * | GetNextVehicle () const |
| Get the next real (non-articulated part) vehicle in the consist. | |
| Train * | 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 (VehicleID index, VehicleType type=VEH_INVALID) | |
| Vehicle constructor. | |
| void | PreDestructor () |
| Destroy all stuff that (still) needs the virtual functions to work properly. | |
| ~Vehicle () override | |
| 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. | |
| GroundVehicleCache * | GetGroundVehicleCache () |
| Access the ground vehicle cache of the vehicle. | |
| const GroundVehicleCache * | GetGroundVehicleCache () 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. | |
| const Engine * | GetEngine () const |
| Retrieves the engine of the vehicle. | |
| const GRFFile * | GetGRF () 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). | |
| 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 string parameters 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. | |
| Vehicle * | Next () const |
| Get the next vehicle of this vehicle. | |
| Vehicle * | Previous () const |
| Get the previous vehicle of this vehicle. | |
| Vehicle * | First () const |
| Get the first vehicle of this vehicle chain. | |
| Vehicle * | Last () |
| Get the last vehicle of this vehicle chain. | |
| const Vehicle * | Last () const |
| Get the last vehicle of this vehicle chain. | |
| Vehicle * | Move (int n) |
| Get the vehicle at offset n of this vehicle chain. | |
| const Vehicle * | Move (int n) const |
| Get the vehicle at offset n of this vehicle chain. | |
| const Order * | GetFirstOrder () const |
| Get the first order of the vehicles order list. | |
| std::span< const Order > | Orders () const |
| std::span< Order > | Orders () |
| void | AddToShared (Vehicle *shared_chain) |
| Adds this vehicle to a shared vehicle chain. | |
| void | RemoveFromShared () |
| Removes the vehicle from the shared order list. | |
| Vehicle * | NextShared () const |
| Get the next vehicle of the shared vehicle chain. | |
| Vehicle * | PreviousShared () const |
| Get the previous vehicle of the shared vehicle chain. | |
| Vehicle * | FirstShared () 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. | |
| void | GetNextStoppingStation (std::vector< StationID > &next_station) 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 reset 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 |
| virtual void | SetDestTile (TileIndex tile) |
| CommandCost | SendToDepot (DoCommandFlags flags, DepotCommandFlags 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. | |
| Order * | GetOrder (int index) const |
| Returns order 'index' of a vehicle or nullptr when it doesn't exists. | |
| const Order * | GetLastOrder () 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. | |
| 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. | |
| Vehicle * | GetNextArticulatedPart () const |
| Get the next part of an articulated engine. | |
| Vehicle * | GetFirstEnginePart () |
| Get the first part of an articulated engine. | |
| const Vehicle * | GetFirstEnginePart () const |
| Get the first part of an articulated engine. | |
| Vehicle * | GetLastEnginePart () |
| Get the last part of an articulated engine. | |
| Vehicle * | GetNextVehicle () const |
| Get the next real (non-articulated part) vehicle in the consist. | |
| Vehicle * | GetPrevVehicle () const |
| Get the previous real (non-articulated part) vehicle in the consist. | |
| 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 BaseConsist | |
| void | CopyConsistPropertiesFrom (const BaseConsist *src) |
| Copy properties of other BaseConsist. | |
| void | ResetDepotUnbunching () |
| Resets all the data used for depot unbunching. | |
Data Fields | |
| VehicleRailFlags | flags {} |
| uint16_t | crash_anim_pos = 0 |
| Crash animation counter. | |
| uint16_t | wait_counter = 0 |
| Ticks waiting in front of a signal, ticks being stuck or a counter for forced proceeding through signals. | |
| TrainCache | tcache {} |
| Train * | other_multiheaded_part = nullptr |
| RailTypes | compatible_railtypes {} |
| RailTypes | railtypes {} |
| TrackBits | track {} |
| TrainForceProceeding | force_proceed {} |
| Data Fields inherited from GroundVehicle< Train, VEH_TRAIN > | |
| GroundVehicleCache | gcache |
| Cache of often calculated values. | |
| uint16_t | gv_flags |
| Data Fields inherited from Vehicle | |
| TileIndex | tile = INVALID_TILE |
| Current tile index. | |
| TileIndex | dest_tile = INVALID_TILE |
| Heading for this tile. | |
| Money | profit_this_year = 0 |
| Profit this year << 8, low 8 bits are fract. | |
| Money | profit_last_year = 0 |
| Profit last year << 8, low 8 bits are fract. | |
| Money | value = 0 |
| Value of the vehicle. | |
| CargoPayment * | cargo_payment = nullptr |
| The cargo payment we're currently in. | |
| Rect | coord {} |
| NOSAVE: Graphical bounding box of the vehicle, i.e. what to redraw on moves. | |
| Vehicle * | hash_viewport_next = nullptr |
| NOSAVE: Next vehicle in the visual location hash. | |
| Vehicle ** | hash_viewport_prev = nullptr |
| NOSAVE: Previous vehicle in the visual location hash. | |
| Vehicle * | hash_tile_next = nullptr |
| NOSAVE: Next vehicle in the tile location hash. | |
| Vehicle ** | hash_tile_prev = nullptr |
| NOSAVE: Previous vehicle in the tile location hash. | |
| Vehicle ** | hash_tile_current = nullptr |
| 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 = 0 |
| Reliability. | |
| uint16_t | reliability_spd_dec = 0 |
| Reliability decrease speed. | |
| uint8_t | breakdown_ctr = 0 |
| Counter for managing breakdown events. | |
| uint8_t | breakdown_delay = 0 |
| Counter for managing breakdown length. | |
| uint8_t | breakdowns_since_last_service = 0 |
| Counter for the amount of breakdowns. | |
| uint8_t | breakdown_chance = 0 |
| Current chance of breakdowns. | |
| int32_t | x_pos = 0 |
| x coordinate. | |
| int32_t | y_pos = 0 |
| y coordinate. | |
| int32_t | z_pos = 0 |
| z coordinate. | |
| Direction | direction = INVALID_DIR |
| facing | |
| Owner | owner = INVALID_OWNER |
| Which company owns the vehicle? | |
| uint8_t | spritenum = 0 |
| currently displayed sprite index 0xfd == custom sprite, 0xfe == custom second head sprite 0xff == reserved for another custom sprite | |
| SpriteBounds | bounds {} |
| Bounding box of vehicle. | |
| EngineID | engine_type = EngineID::Invalid() |
| The type of engine used for this vehicle. | |
| TextEffectID | fill_percent_te_id = INVALID_TE_ID |
| a text-effect id to a loading indicator object | |
| UnitID | unitnumber {} |
| unit number, for display purposes only | |
| uint16_t | cur_speed = 0 |
| current speed | |
| uint8_t | subspeed = 0 |
| fractional speed | |
| uint8_t | acceleration = 0 |
| used by train & aircraft | |
| uint32_t | motion_counter = 0 |
| counter to occasionally play a vehicle sound. | |
| uint8_t | progress = 0 |
| The percentage (if divided by 256) this vehicle already crossed the tile unit. | |
| VehicleRandomTriggers | waiting_random_triggers |
| Triggers to be yet matched before rerandomizing the random bits. | |
| uint16_t | random_bits = 0 |
| Bits used for randomized variational spritegroups. | |
| StationID | last_station_visited = StationID::Invalid() |
| The last station we stopped at. | |
| StationID | last_loading_station = StationID::Invalid() |
| 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. | |
| CargoType | cargo_type {} |
| type of cargo this vehicle is carrying | |
| uint8_t | cargo_subtype = 0 |
| Used for livery refits (NewGRF variations). | |
| uint16_t | cargo_cap = 0 |
| total capacity | |
| uint16_t | refit_cap = 0 |
| Capacity left over from before last refit. | |
| uint16_t | cargo_age_counter = 0 |
| Ticks till cargo is aged next. | |
| int8_t | trip_occupancy = 0 |
| NOSAVE: Occupancy of vehicle of the current trip (updated after leaving a station). | |
| uint8_t | day_counter = 0 |
| Increased by one for each day. | |
| uint8_t | tick_counter = 0 |
| Increased by one for each tick. | |
| uint8_t | running_ticks = 0 |
| Number of ticks this vehicle was not stopped this day. | |
| uint16_t | load_unload_ticks = 0 |
| Ticks to wait before starting next cycle. | |
| VehStates | vehstatus {} |
| Status. | |
| uint8_t | subtype = 0 |
| subtype (Filled with values from AircraftSubType/DisasterSubType/EffectVehicleType/GroundVehicleSubtypeFlags) | |
| Order | current_order {} |
| The current order (+ status, like: loading). | |
| union { | |
| OrderList * orders = nullptr | |
| Pointer to the order list for this vehicle. More... | |
| uint32_t 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 = GroupID::Invalid() |
| Index of group Pool array. | |
| MutableSpriteCache | sprite_cache {} |
| Cache of sprites and values related to recalculating them, see MutableSpriteCache. | |
| Data Fields inherited from BaseVehicle | |
| VehicleType | type = VEH_INVALID |
| 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 = 0 |
| The interval for (automatic) servicing; either in days or %. | |
| VehicleOrderID | cur_real_order_index = 0 |
| The index to the current real (non-implicit) order. | |
| VehicleOrderID | cur_implicit_order_index = 0 |
| The index to the current implicit order. | |
| VehicleFlags | 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 Train *head) 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. | |
| 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. | |
| int16_t | GetCurveSpeedModifier () const |
| Returns the curve speed modifier of this vehicle. | |
| bool | TileMayHaveSlopedTrack () const |
| Checks if the vehicle is at a tile that can be sloped. | |
| bool | HasToUseGetSlopePixelZ () |
| Trains can always use the faster algorithm because they have always the same direction as the track under them. | |
| Protected Member Functions inherited from GroundVehicle< Train, VEH_TRAIN > | |
| uint | DoUpdateSpeed (uint accel, int min_speed, int max_speed) |
| Update the speed of the vehicle. | |
Friends | |
| struct | GroundVehicle< Train, VEH_TRAIN > |
Additional Inherited Members | |
| Public Types inherited from GroundVehicle< Train, VEH_TRAIN > | |
| typedef GroundVehicle< Train, Type > | GroundVehicleBase |
| Our type. | |
| Public Types inherited from SpecializedVehicle< Train, Type > | |
| typedef SpecializedVehicle< Train, Type > | SpecializedVehicleBase |
| Our type. | |
| Static Public Member Functions inherited from SpecializedVehicle< Train, Type > | |
| static bool | IsValidID (auto index) |
| Tests whether given index is a valid index for vehicle of this type. | |
| static Train * | Get (auto index) |
| Gets vehicle with given index. | |
| static Train * | GetIfValid (auto index) |
| Returns vehicle if the index is a valid index for this vehicle type. | |
| static Train * | Create (Targs &&... args) |
| Creates a new T-object in the vehicle pool. | |
| static Train * | CreateAtIndex (VehicleID index, Targs &&... args) |
| Creates a new T-object in the vehicle pool. | |
| static Train * | From (Vehicle *v) |
| Converts a Vehicle to SpecializedVehicle with type checking. | |
| static Pool::IterateWrapper< Train > | 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 Attributes inherited from SpecializedVehicle< Train, Type > | |
| static const VehicleType | EXPECTED_TYPE |
| Specialized type. | |
|
inlineoverride |
We want to 'destruct' the right class.
Definition at line 109 of file train.h.
References Vehicle::PreDestructor().
|
inline |
Calculate the offset from this vehicle's center to the following center taking the vehicle lengths into account.
Definition at line 173 of file train.h.
References GroundVehicleCache::cached_veh_length, GroundVehicle< T, Type >::gcache, GroundVehicle< Train, VEH_TRAIN >::gcache, and SpecializedVehicle< Train, Type >::Next().
Referenced by AdvanceWagonsAfterSwap(), AdvanceWagonsBeforeSwap(), TicksToLeaveDepot(), and VehicleEnter_Track().
| void Train::ConsistChanged | ( | ConsistChangeFlags | allowed_changes | ) |
Recalculates the cached stuff of a train.
Should be called each time a vehicle is added to/removed from the chain, and when the game is loaded. Note: this needs to be called too for 'wagon chains' (in the depot, without an engine)
| allowed_changes | Stuff that is allowed to change. |
Definition at line 107 of file train_cmd.cpp.
References _settings_game, AllowedOnNormalRail, CALLBACK_FAILED, EngineInfo::callback_mask, Capacity, EngineInfo::cargo_age_period, GroundVehicle< Train, VEH_TRAIN >::CargoChanged(), CBID_VEHICLE_LENGTH, Clamp(), Engine::DetermineCapacity(), Vehicle::engine_type, ErrorUnknownCallbackResult(), GroundVehicle< Train, VEH_TRAIN >::gcache, GetAllPoweredRailTypes(), GetCurveSpeedLimit(), Engine::GetGRF(), Engine::GetGRFID(), GetVehicleCallback(), HasBit(), Vehicle::InvalidateNewGRFCache(), InvalidateNewGRFInspectWindow(), InvalidateWindowData(), GroundVehicle< Train, VEH_TRAIN >::IsFreeWagon(), Vehicle::IsFrontEngine(), Length, RailVehicleInfo::max_speed, EngineInfo::misc_flags, RailVehicleInfo::pow_wag_power, RailVehicleInfo::power, PoweredWagon, PROP_TRAIN_CARGO_AGE_PERIOD, PROP_TRAIN_SHORTEN_FACTOR, PROP_TRAIN_SPEED, PROP_TRAIN_USER_DATA, RailTilts, RAILTYPE_RAIL, RailVehicleInfo::railtypes, RAILVEH_WAGON, SetWindowDirty(), RailVehicleInfo::shorten_factor, ShowNewGrfVehicleError(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), UpdateAcceleration(), RailVehicleInfo::user_def_data, UsesWagonOverride(), Vehicle::vcache, VE_DISABLE_WAGON_POWER, VehCapacity, VEHICLE_LENGTH, VehicleLengthChanged(), VIWD_CONSIST_CHANGED, WC_VEHICLE_DETAILS, WC_VEHICLE_ORDERS, WC_VEHICLE_REFIT, and WC_VEHICLE_VIEW.
Referenced by AfterLoadVehiclesPhase2(), CheckCaches(), CmdBuildRailVehicle(), CmdBuildRailWagon(), CmdRefitVehicle(), CmdReverseTrainDirection(), DeleteLastWagon(), FixupTrainLengths(), NormaliseTrainHead(), ReverseTrainDirection(), TrainController(), TransferCargo(), and VehicleEnterDepot().
|
overridevirtual |
The train vehicle crashed!
Update its status and other parts around it.
| flooded | Crash was caused by flooding. |
Reimplemented from GroundVehicle< Train, VEH_TRAIN >.
Definition at line 3143 of file train_cmd.cpp.
References ClearPathReservation(), GroundVehicle< T, Type >::Crash(), crash_anim_pos, Vehicle::fill_percent_te_id, FreeTrainTrackReservation(), GetOtherTunnelBridgeEnd(), GetVehicleTrackdir(), HideFillingPercent(), INVALID_TILE, Vehicle::IsFrontEngine(), IsTileType(), SpecializedVehicle< T, Type >::Next(), SetTunnelBridgeReservation(), Stuck, Vehicle::tile, TrainApproachingCrossingTile(), TunnelBridge, and UpdateLevelCrossing().
Referenced by TrainCrashed().
|
overridevirtual |
Find the closest depot for this vehicle and tell us the location, DestinationID and whether we should reverse.
Reimplemented from Vehicle.
Definition at line 2207 of file train_cmd.cpp.
References FindDepotData::best_length, FindClosestTrainDepot(), GetDepotIndex(), FindDepotData::reverse, and FindDepotData::tile.
|
inlineprotected |
Checks the current acceleration status of this vehicle.
Definition at line 283 of file train.h.
References AS_ACCEL, AS_BRAKE, Reversing, Stopped, Stuck, and Vehicle::vehstatus.
Referenced by UpdateSpeed().
|
inline |
Allows to know the acceleration type of a vehicle.
Definition at line 186 of file train.h.
References RailTypeInfo::acceleration_type, GetRailType(), GetRailTypeInfo(), and Vehicle::tile.
Referenced by AffectSpeedByZChange(), and TrainController().
|
inlineprotected |
Gets the air drag coefficient of this vehicle.
Definition at line 274 of file train.h.
References Vehicle::engine_type.
|
inlineprotected |
Gets the area used for calculating air drag.
Definition at line 264 of file train.h.
References Hidden, TRACK_BIT_WORMHOLE, and Vehicle::vehstatus.
|
overridevirtual |
Calculates the maximum speed of the vehicle under its current conditions.
Reimplemented from Vehicle.
Definition at line 382 of file train_cmd.cpp.
References _settings_game, Vehicle::cur_speed, Vehicle::current_order, GroundVehicle< Train, VEH_TRAIN >::gcache, GetBridgeSpec(), GetBridgeType(), GetStationIndex(), GetTrainStopLocation(), Hidden, IsRailStationTile(), BridgeSpec::speed, Vehicle::tile, TILE_SIZE, TRACK_BIT_DEPOT, and TRACK_BIT_WORMHOLE.
Referenced by UpdateSpeed().
|
inlineprotected |
Calculates the current speed of this vehicle.
Definition at line 292 of file train.h.
References Vehicle::cur_speed.
Referenced by GetRollingFriction().
| int Train::GetCursorImageOffset | ( | ) | const |
Definition at line 440 of file train_cmd.cpp.
| uint16_t Train::GetCurveSpeedLimit | ( | ) | const |
Computes train speed limit caused by curves.
Definition at line 307 of file train_cmd.cpp.
References _settings_game, CeilDiv(), Clamp(), RailTypeInfo::curve_speed, DIRDIFF_45LEFT, DIRDIFF_45RIGHT, DIRDIFF_90LEFT, DIRDIFF_90RIGHT, DIRDIFF_SAME, DirDifference(), SpecializedVehicle< Train, Type >::First(), GetRailType(), GetRailTypeInfo(), Vehicle::tile, and VEHICLE_LENGTH.
Referenced by ConsistChanged(), and TrainController().
|
inlineprotected |
Returns the curve speed modifier of this vehicle.
Definition at line 331 of file train.h.
References Vehicle::engine_type, and PROP_TRAIN_CURVE_SPEED_MOD.
| int Train::GetDisplayImageWidth | ( | Point * | offset = nullptr | ) | const |
Get the width of a train vehicle image in the GUI.
| offset | Additional offset for positioning the sprite; set to nullptr if not needed |
Definition at line 460 of file train_cmd.cpp.
References Vehicle::engine_type, Flipped, GroundVehicle< Train, VEH_TRAIN >::gcache, Vehicle::GetEngine(), Engine::GetGRF(), Point, RailFlips, ScaleSpriteTrad(), GRFFile::traininfo_vehicle_pitch, GRFFile::traininfo_vehicle_width, VEHICLE_LENGTH, Coord2D< T >::x, and Coord2D< T >::y.
Referenced by DrawTrainDetails(), DrawTrainImage(), NewGRFInspectWindow::DrawVehicleChainWidget(), GetLengthOfArticulatedVehicle(), GetSingleVehicleWidth(), and DepotWindow::GetVehicleFromDepotWndPt().
|
inlineoverridevirtual |
Gets the maximum speed in km-ish/h that can be sent into string parameters for string processing.
Reimplemented from Vehicle.
Definition at line 120 of file train.h.
References Vehicle::vcache.
Referenced by CYapfCostRailT< Types >::PfCalcCost().
|
inlineoverridevirtual |
Gets the speed in km-ish/h that can be sent into string parameters for string processing.
Reimplemented from Vehicle.
Definition at line 119 of file train.h.
References GroundVehicle< Train, VEH_TRAIN >::gcache.
|
inlineoverridevirtual |
Sets the expense type associated to this vehicle type.
| income | whether this is income or (running) expenses of the vehicle |
Reimplemented from Vehicle.
Definition at line 115 of file train.h.
References EXPENSES_TRAIN_REVENUE, and EXPENSES_TRAIN_RUN.
|
overridevirtual |
Get the sprite to display the train.
| direction | Direction of view/travel. |
| image_type | Visualisation context. |
| result | Sprite sequence to add the to be drawn sprites to. |
Reimplemented from Vehicle.
Definition at line 495 of file train_cmd.cpp.
References Vehicle::cargo, CUSTOM_VEHICLE_SPRITENUM_REVERSED, Vehicle::direction, Flipped, Vehicle::GetEngine(), VehicleSpriteSeq::IsValid(), IsValidImageIndex(), Engine::original_image_index, ReverseDir(), VehicleSpriteSeq::Set(), and Vehicle::spritenum.
Referenced by DrawTrainDetails(), and DrawTrainImage().
|
inlineprotected |
Gets the maximum speed allowed by the track for this vehicle.
Definition at line 322 of file train.h.
References GetRailType(), GetRailTypeInfo(), RailTypeInfo::max_speed, and Vehicle::tile.
|
overrideprotectedvirtual |
Calculates the weight value that this vehicle will have when fully loaded with its current cargo.
Reimplemented from Vehicle.
Definition at line 4242 of file train_cmd.cpp.
References Vehicle::cargo_type, Vehicle::engine_type, GroundVehicle< Train, VEH_TRAIN >::gcache, CargoSpec::Get(), Vehicle::GetEngine(), Vehicle::IsArticulatedPart(), PoweredWagon, and PROP_TRAIN_WEIGHT.
|
inline |
Get the next real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist.
Definition at line 149 of file train.h.
References SpecializedVehicle< T, Type >::GetNextVehicle(), SpecializedVehicle< Train, Type >::GetNextVehicle(), and GroundVehicle< T, Type >::IsRearDualheaded().
Referenced by ArrangeTrains(), CmdAutoreplaceVehicle(), Vehicle::NeedsServicing(), and ReplaceChain().
|
overridevirtual |
Get the location of the next station to visit.
| station | Next station to visit. |
Reimplemented from Vehicle.
Definition at line 2985 of file train_cmd.cpp.
References BaseStation::facilities, SpecializedStation< Station, false >::Get(), Vehicle::IncrementRealOrderIndex(), Vehicle::last_station_visited, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), Train, and BaseStation::xy.
|
inlineprotected |
Allows to know the power value that this vehicle will use.
Definition at line 197 of file train.h.
References Vehicle::engine_type, GetRailType(), HasPowerOnRail(), Vehicle::IsArticulatedPart(), GroundVehicle< Train, VEH_TRAIN >::IsMultiheaded(), PROP_TRAIN_POWER, and Vehicle::tile.
|
inlineprotected |
Returns a value if this articulated part is powered.
Definition at line 214 of file train.h.
References GroundVehicle< Train, VEH_TRAIN >::gcache, GetRailType(), HasPowerOnRail(), PoweredWagon, and Vehicle::tile.
|
inline |
Get the previous real (non-articulated part and non rear part of dualheaded engine) vehicle in the consist.
Definition at line 161 of file train.h.
References SpecializedVehicle< T, Type >::GetPrevVehicle(), SpecializedVehicle< Train, Type >::GetPrevVehicle(), and GroundVehicle< T, Type >::IsRearDualheaded().
Referenced by ReplaceChain().
|
inlineprotected |
Returns the rolling friction coefficient of this vehicle.
Definition at line 301 of file train.h.
References GetCurrentSpeed().
|
overridevirtual |
Get running cost for the train consist.
Reimplemented from Vehicle.
Definition at line 4089 of file train_cmd.cpp.
References Vehicle::GetEngine(), Engine::GetGRF(), SpecializedVehicle< T, Type >::GetNextVehicle(), GetPrice(), Invalid, GroundVehicle< T, Type >::IsMultiheaded(), PROP_TRAIN_RUNNING_COST_FACTOR, and RailVehicleInfo::running_cost.
Referenced by OnNewEconomyDay().
|
inlineprotected |
Returns the slope steepness used by this vehicle.
Definition at line 313 of file train.h.
References _settings_game.
|
inlineprotected |
Allows to know the tractive effort value that this vehicle will use.
Definition at line 255 of file train.h.
References Vehicle::engine_type, and PROP_TRAIN_TRACTIVE_EFFORT.
|
overridevirtual |
Get the tracks of the train vehicle.
Reimplemented from Vehicle.
Definition at line 4225 of file train_cmd.cpp.
References Crashed, DiagDirToDiagTrackdir(), DirToDiagDir(), FindFirstTrack(), GetRailDepotDirection(), INVALID_TRACKDIR, TRACK_BIT_DEPOT, TRACK_BIT_WORMHOLE, TrackDirectionToTrackdir(), and Vehicle::vehstatus.
Referenced by CheckNextTrainTile(), CmdBuildSingleSignal(), Crash(), DetermineNextTrainForceProceeding(), FollowTrainReservation(), FreeTrainReservation(), FreeTrainTrackReservation(), RestoreTrainReservation(), ReverseTrainDirection(), TrainController(), YapfTrainCheckReverse(), and YapfTrainFindNearestDepot().
|
inlineprotected |
Allows to know the weight value that this vehicle will use.
Definition at line 228 of file train.h.
References Vehicle::cargo, Vehicle::cargo_type, Vehicle::engine_type, GroundVehicle< Train, VEH_TRAIN >::gcache, CargoSpec::Get(), Vehicle::IsArticulatedPart(), PoweredWagon, and PROP_TRAIN_WEIGHT.
|
inlineprotected |
|
inlineoverridevirtual |
Check whether the vehicle is in the depot.
Reimplemented from Vehicle.
Definition at line 124 of file train.h.
References TRACK_BIT_DEPOT.
|
inlineoverridevirtual |
Whether this is the primary vehicle in the chain.
Reimplemented from Vehicle.
Definition at line 117 of file train.h.
References Vehicle::IsFrontEngine().
Referenced by CmdForceTrainProceed(), CmdReverseTrainDirection(), and CmdSellRailWagon().
|
overridevirtual |
Goods at the consist have changed, update the graphics, cargo, and acceleration.
Reimplemented from Vehicle.
Definition at line 3000 of file train_cmd.cpp.
References GroundVehicle< Train, VEH_TRAIN >::CargoChanged(), Vehicle::colourmap, SpecializedVehicle< T, Type >::Next(), UpdateAcceleration(), and SpecializedVehicle< T, Type >::UpdateViewport().
Referenced by CmdMoveRailVehicle().
|
overridevirtual |
Calendar day handler.
Reimplemented from Vehicle.
Definition at line 4181 of file train_cmd.cpp.
References AgeVehicle().
|
overridevirtual |
Economy day handler.
Reimplemented from Vehicle.
Definition at line 4187 of file train_cmd.cpp.
References CheckIfTrainNeedsService(), CheckOrders(), CheckVehicleBreakdown(), Vehicle::current_order, Vehicle::day_counter, Ticks::DAY_TICKS, TimerGameConst< struct Calendar >::DAYS_IN_YEAR, DecreaseVehicleValue(), Vehicle::dest_tile, EconomyAgeVehicle(), EXPENSES_TRAIN_RUN, SpecializedStation< Station, false >::Get(), CommandCost::GetCost(), GetRunningCost(), INVALID_TILE, Vehicle::IsFrontEngine(), Vehicle::owner, Vehicle::profit_this_year, Vehicle::running_ticks, SetWindowClassesDirty(), SetWindowDirty(), SubtractMoneyFromCompanyFract(), OrthogonalTileArea::tile, Vehicle::tile, BaseStation::train_station, WC_TRAINS_LIST, and WC_VEHICLE_DETAILS.
|
overridevirtual |
Play a sound for a train leaving the station.
Reimplemented from Vehicle.
Definition at line 2216 of file train_cmd.cpp.
References Vehicle::engine_type, PlayVehicleSound(), SND_04_DEPARTURE_STEAM, SND_0A_DEPARTURE_TRAIN, SND_41_DEPARTURE_MAGLEV, SND_47_DEPARTURE_MONORAIL, and VSE_START.
Referenced by CheckTrainStayInDepot().
| void Train::ReserveTrackUnderConsist | ( | ) | const |
Tries to reserve track under whole train consist.
Definition at line 3121 of file train_cmd.cpp.
References DiagDirToDiagTrack(), GetTunnelBridgeDirection(), SpecializedVehicle< T, Type >::Next(), Vehicle::tile, TRACK_BIT_DEPOT, TRACK_BIT_WORMHOLE, TrackBitsToTrack(), and TryReserveRailTrack().
Referenced by TrainCrashed().
|
overridevirtual |
Update train vehicle data for a tick.
Reimplemented from Vehicle.
Definition at line 4114 of file train_cmd.cpp.
References crash_anim_pos, Crashed, BaseConsist::current_order_time, GroundVehicle< Train, VEH_TRAIN >::IsFreeWagon(), Vehicle::IsFrontEngine(), PFE_GL_TRAINS, Vehicle::running_ticks, Stopped, Vehicle::tick_counter, and Vehicle::vehstatus.
|
inlineprotected |
Checks if the vehicle is at a tile that can be sloped.
Definition at line 340 of file train.h.
References TRACK_BIT_X, and TRACK_BIT_Y.
| void Train::UpdateAcceleration | ( | ) |
Update acceleration of the train from the cached power and weight.
Definition at line 430 of file train_cmd.cpp.
References Vehicle::acceleration, Clamp(), GroundVehicle< Train, VEH_TRAIN >::gcache, GroundVehicle< Train, VEH_TRAIN >::IsFreeWagon(), and Vehicle::IsFrontEngine().
Referenced by CheckTrainStayInDepot(), ConsistChanged(), and MarkDirty().
|
overridevirtual |
Updates the x and y offsets and the size of the sprite used for this vehicle.
Reimplemented from Vehicle.
Definition at line 1494 of file train_cmd.cpp.
References Vehicle::bounds, DIR_NE, DIR_NW, DIR_SE, DIR_SW, DirToDiagDir(), Vehicle::engine_type, Flipped, GroundVehicle< Train, VEH_TRAIN >::gcache, IsDiagonalDirection(), Point, RailFlips, ReverseDir(), VEHICLE_LENGTH, Coord2D< T >::x, and Coord2D< T >::y.
Referenced by TrainController().
| int Train::UpdateSpeed | ( | ) |
This function looks at the vehicle and updates its speed (cur_speed and subspeed) variables.
Furthermore, it returns the distance that the train can drive this tick. Vehicle::GetAdvanceDistance() determines the distance to drive before moving a step on the map.
Definition at line 3020 of file train_cmd.cpp.
References _settings_game, Vehicle::acceleration, AS_BRAKE, GroundVehicle< Train, VEH_TRAIN >::DoUpdateSpeed(), GroundVehicle< Train, VEH_TRAIN >::GetAcceleration(), GetAccelerationStatus(), and GetCurrentMaxSpeed().
|
friend |
| uint16_t Train::crash_anim_pos = 0 |
Crash animation counter.
Definition at line 93 of file train.h.
Referenced by Crash(), HandleCrashedTrain(), and Tick().
| TrainForceProceeding Train::force_proceed {} |
| TrainCache Train::tcache {} |
| uint16_t Train::wait_counter = 0 |
Ticks waiting in front of a signal, ticks being stuck or a counter for forced proceeding through signals.
Definition at line 94 of file train.h.
Referenced by CheckTrainStayInDepot(), MarkTrainAsStuck(), ReverseTrainDirection(), TrainController(), TryPathReserve(), and VehicleEnterDepot().