OpenTTD Source 20250428-master-ga5578166bb
|
Stores station stats for a single cargo. More...
#include <station_base.h>
Data Structures | |
struct | GoodsEntryData |
Public Types | |
enum class | State : uint8_t { Acceptance = 0 , Rating = 1 , EverAccepted = 2 , LastMonth = 3 , CurrentMonth = 4 , AcceptedBigtick = 5 } |
Status of this cargo for the station. More... | |
using | States = EnumBitSet< State, uint8_t > |
Public Member Functions | |
bool | HasVehicleEverTriedLoading () const |
Reports whether a vehicle has ever tried to load the cargo at this station. | |
bool | HasRating () const |
Does this cargo have a rating at this station? | |
StationID | GetVia (StationID source) const |
Get the best next hop for a cargo packet from station source. | |
StationID | GetVia (StationID source, StationID excluded, StationID excluded2=StationID::Invalid()) const |
Get the best next hop for a cargo packet from station source, optionally excluding one or two stations. | |
debug_inline bool | HasData () const |
Test if this goods entry has optional cargo packet/flow data. | |
void | ClearData () |
Clear optional cargo packet/flow data. | |
debug_inline const GoodsEntryData & | GetData () const |
Get optional cargo packet/flow data. | |
debug_inline GoodsEntryData & | GetData () |
Get non-const optional cargo packet/flow data. | |
GoodsEntryData & | GetOrCreateData () |
Get optional cargo packet/flow data. | |
uint8_t | ConvertState () const |
Convert GoodsEntry status to the form required for NewGRF variables. | |
Data Fields | |
uint | max_waiting_cargo = 0 |
Max cargo from this station waiting at any station. | |
NodeID | node = INVALID_NODE |
ID of node in link graph referring to this goods entry. | |
LinkGraphID | link_graph = LinkGraphID::Invalid() |
Link graph this station belongs to. | |
States | status {} |
Status of this cargo, see State. | |
uint8_t | time_since_pickup = 255 |
Number of rating-intervals (up to 255) since the last vehicle tried to load this cargo. | |
uint8_t | rating = INITIAL_STATION_RATING |
Station rating for this cargo. | |
uint8_t | last_speed = 0 |
Maximum speed (up to 255) of the last vehicle that tried to load this cargo. | |
uint8_t | last_age = 255 |
Age in years (up to 255) of the last vehicle that tried to load this cargo. | |
uint8_t | amount_fract = 0 |
Fractional part of the amount in the cargo list. | |
Private Attributes | |
std::unique_ptr< GoodsEntryData > | data = nullptr |
Optional cargo packet and flow data. | |
Stores station stats for a single cargo.
Definition at line 166 of file station_base.h.
using GoodsEntry::States = EnumBitSet<State, uint8_t> |
Definition at line 209 of file station_base.h.
|
strong |
Status of this cargo for the station.
Enumerator | |
---|---|
Acceptance | Set when the station accepts the cargo currently for final deliveries. It is updated every STATION_ACCEPTANCE_TICKS ticks by checking surrounding tiles for acceptance >= 8/8. |
Rating | This indicates whether a cargo has a rating at the station. Set when cargo was ever waiting at the station. It is set when cargo supplied by surrounding tiles is moved to the station, or when arriving vehicles unload/transfer cargo without it being a final delivery. This flag is cleared after 255 * STATION_RATING_TICKS of not having seen a pickup. |
EverAccepted | Set when a vehicle ever delivered cargo to the station for final delivery. This flag is never cleared. |
LastMonth | Set when cargo was delivered for final delivery last month. This flag is set to the value of State::CurrentMonth at the start of each month. |
CurrentMonth | Set when cargo was delivered for final delivery this month. This flag is reset on the beginning of every month. |
AcceptedBigtick | Set when cargo was delivered for final delivery during the current STATION_ACCEPTANCE_TICKS interval. This flag is reset every STATION_ACCEPTANCE_TICKS ticks. |
Definition at line 168 of file station_base.h.
|
inline |
Clear optional cargo packet/flow data.
Definition at line 309 of file station_base.h.
References data.
Referenced by LinkGraphJob::~LinkGraphJob().
uint8_t GoodsEntry::ConvertState | ( | ) | const |
Convert GoodsEntry status to the form required for NewGRF variables.
Definition at line 60 of file newgrf_station.cpp.
References AcceptedBigtick, CurrentMonth, EverAccepted, LastMonth, SetBit(), status, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().
|
inline |
Get non-const optional cargo packet/flow data.
Definition at line 327 of file station_base.h.
|
inline |
Get optional cargo packet/flow data.
Definition at line 316 of file station_base.h.
References data, and HasData().
Referenced by LinkGraphOverlay::AddLinks(), StationViewWindow::BuildCargoList(), DeleteStaleLinks(), StationViewWindow::DrawEntries(), StationViewWindow::EstimateDestinations(), GetVia(), GetVia(), LoadUnloadVehicle(), RerouteCargo(), StationResolverObject::ResolveReal(), VehicleCargoList::Stage(), TruncateCargo(), and LinkGraphJob::~LinkGraphJob().
|
inline |
Get optional cargo packet/flow data.
The data is create if it is not already present.
Definition at line 337 of file station_base.h.
References data, and HasData().
Referenced by LoadUnloadVehicle(), SwapPackets(), and LinkGraphJob::~LinkGraphJob().
Get the best next hop for a cargo packet from station source.
source | Source of the packet. |
Definition at line 276 of file station_base.h.
References GoodsEntry::GoodsEntryData::flows, GetData(), and HasData().
Referenced by StationCargoReroute::operator()(), and VehicleCargoReroute::operator()().
|
inline |
Get the best next hop for a cargo packet from station source, optionally excluding one or two stations.
source | Source of the packet. |
excluded | If this station would be chosen choose the second best one instead. |
excluded2 | Second station to be excluded, if != StationID::Invalid(). |
Definition at line 292 of file station_base.h.
References GoodsEntry::GoodsEntryData::flows, GetData(), and HasData().
|
inline |
Test if this goods entry has optional cargo packet/flow data.
Definition at line 304 of file station_base.h.
References data.
Referenced by LinkGraphOverlay::AddLinks(), StationViewWindow::BuildCargoList(), DeleteStaleLinks(), StationViewWindow::DrawEntries(), StationViewWindow::EstimateDestinations(), GetData(), GetData(), GetOrCreateData(), GetVia(), GetVia(), LoadUnloadVehicle(), RerouteCargo(), StationResolverObject::ResolveReal(), VehicleCargoList::Stage(), and TruncateCargo().
|
inline |
Does this cargo have a rating at this station?
Definition at line 266 of file station_base.h.
References Rating, status, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().
Referenced by StationViewWindow::DrawCargoRatings(), and LoadUnloadVehicle().
|
inline |
Reports whether a vehicle has ever tried to load the cargo at this station.
This does not imply that there was cargo available for loading. Refer to GoodsEntry::State::Rating for that.
Definition at line 260 of file station_base.h.
uint8_t GoodsEntry::amount_fract = 0 |
Fractional part of the amount in the cargo list.
Definition at line 253 of file station_base.h.
|
private |
Optional cargo packet and flow data.
Definition at line 346 of file station_base.h.
Referenced by ClearData(), GetData(), GetData(), GetOrCreateData(), and HasData().
uint8_t GoodsEntry::last_age = 255 |
Age in years (up to 255) of the last vehicle that tried to load this cargo.
This does not imply there was any cargo to load.
Definition at line 251 of file station_base.h.
Referenced by LoadUnloadVehicle().
uint8_t GoodsEntry::last_speed = 0 |
Maximum speed (up to 255) of the last vehicle that tried to load this cargo.
This does not imply there was any cargo to load. The unit used is a special vehicle-specific speed unit for station ratings.
Definition at line 245 of file station_base.h.
Referenced by LoadUnloadVehicle().
LinkGraphID GoodsEntry::link_graph = LinkGraphID::Invalid() |
Link graph this station belongs to.
Definition at line 223 of file station_base.h.
Referenced by LinkGraphOverlay::AddLinks(), DeleteStaleLinks(), StationViewWindow::DrawCargoRatings(), IncreaseStats(), UpdateStationAcceptance(), and LinkGraphJob::~LinkGraphJob().
uint GoodsEntry::max_waiting_cargo = 0 |
Max cargo from this station waiting at any station.
Definition at line 221 of file station_base.h.
Referenced by TruncateCargo().
NodeID GoodsEntry::node = INVALID_NODE |
ID of node in link graph referring to this goods entry.
Definition at line 222 of file station_base.h.
Referenced by LinkGraphOverlay::AddLinks(), DeleteStaleLinks(), StationViewWindow::DrawCargoRatings(), IncreaseStats(), UpdateStationAcceptance(), and LinkGraphJob::~LinkGraphJob().
uint8_t GoodsEntry::rating = INITIAL_STATION_RATING |
Station rating for this cargo.
Definition at line 234 of file station_base.h.
Referenced by StationViewWindow::DrawCargoRatings().
States GoodsEntry::status {} |
Status of this cargo, see State.
Definition at line 225 of file station_base.h.
Referenced by LinkGraph::AddNode(), ConvertState(), HasRating(), LoadUnloadVehicle(), PrepareUnload(), and UpdateStationAcceptance().
uint8_t GoodsEntry::time_since_pickup = 255 |
Number of rating-intervals (up to 255) since the last vehicle tried to load this cargo.
The unit used is STATION_RATING_TICKS. This does not imply there was any cargo to load.
Definition at line 232 of file station_base.h.
Referenced by LoadUnloadVehicle().