OpenTTD Source 20241224-master-gf74b0cf984
CargoSpec Struct Reference

Specification of a cargo type. More...

#include <cargotype.h>

Data Structures

struct  IterateWrapper
 
struct  Iterator
 Iterator to iterate all valid CargoSpec. More...
 

Public Member Functions

CargoID Index () const
 Determines index of this cargospec.
 
bool IsValid () const
 Tests for validity of this cargospec.
 
SpriteID GetCargoIcon () const
 Get sprite for showing cargo of this type.
 
uint64_t WeightOfNUnits (uint32_t n) const
 
uint64_t WeightOfNUnitsInTrain (uint32_t n) const
 

Static Public Member Functions

static size_t GetArraySize ()
 Total number of cargospecs, both valid and invalid.
 
static CargoSpecGet (size_t index)
 Retrieve cargo details for the given cargo ID.
 
static IterateWrapper Iterate (size_t from=0)
 Returns an iterable ensemble of all valid CargoSpec.
 

Data Fields

CargoLabel label
 Unique label of the cargo type.
 
uint8_t bitnum = INVALID_CARGO_BITNUM
 Cargo bit number, is INVALID_CARGO_BITNUM for a non-used spec.
 
uint8_t legend_colour
 
uint8_t rating_colour
 
uint8_t weight
 Weight of a single unit of this cargo type in 1/16 ton (62.5 kg).
 
uint16_t multiplier = 0x100
 Capacity multiplier for vehicles. (8 fractional bits)
 
CargoClasses classes
 Classes of this cargo type.
 
int32_t initial_payment
 Initial payment rate before inflation is applied.
 
uint8_t transit_periods [2]
 
bool is_freight
 Cargo type is considered to be freight (affects train freight multiplier).
 
TownAcceptanceEffect town_acceptance_effect
 The effect that delivering this cargo type has on towns. Also affects destination of subsidies.
 
TownProductionEffect town_production_effect = INVALID_TPE
 The effect on town cargo production.
 
uint16_t town_production_multiplier = TOWN_PRODUCTION_DIVISOR
 Town production multipler, if commanded by TownProductionEffect.
 
uint8_t callback_mask
 Bitmask of cargo callbacks that have to be called.
 
StringID name
 Name of this type of cargo.
 
StringID name_single
 Name of a single entity of this type of cargo.
 
StringID units_volume
 Name of a single unit of cargo of this type.
 
StringID quantifier
 Text for multiple units of cargo of this type.
 
StringID abbrev
 Two letter abbreviation for this cargo type.
 
SpriteID sprite
 Icon to display this cargo type, may be 0xFFF (which means to resolve an action123 chain).
 
const struct GRFFilegrffile
 NewGRF where group belongs to.
 
const struct SpriteGroupgroup
 
Money current_payment
 

Static Public Attributes

static std::array< std::vector< const CargoSpec * >, NUM_TPE > town_production_cargoes {}
 List of cargo specs for each Town Product Effect.
 

Static Private Attributes

static CargoSpec array [NUM_CARGO]
 Array holding all CargoSpecs.
 
static std::map< CargoLabel, CargoIDlabel_map {}
 Translation map from CargoLabel to Cargo ID.
 

Friends

void SetupCargoForClimate (LandscapeID l)
 Set up the default cargo types for the given landscape type.
 
void BuildCargoLabelMap ()
 Build cargo label map.
 
CargoID GetCargoIDByLabel (CargoLabel ct)
 
void FinaliseCargoArray ()
 Check for invalid cargoes.
 

Detailed Description

Specification of a cargo type.

Definition at line 76 of file cargotype.h.

Member Function Documentation

◆ Get()

static CargoSpec * CargoSpec::Get ( size_t  index)
inlinestatic

◆ GetArraySize()

static size_t CargoSpec::GetArraySize ( )
inlinestatic

Total number of cargospecs, both valid and invalid.

Returns
length of CargoSpec::array

Definition at line 129 of file cargotype.h.

References array, and lengthof.

Referenced by FormatString().

◆ GetCargoIcon()

SpriteID CargoSpec::GetCargoIcon ( ) const

Get sprite for showing cargo of this type.

Returns
Sprite number to use.

Definition at line 178 of file cargotype.cpp.

References GetCustomCargoSprite(), and sprite.

Referenced by DrawCargoIconOverlay(), and DrawCargoIcons().

◆ Index()

CargoID CargoSpec::Index ( ) const
inline

Determines index of this cargospec.

Returns
index (in the CargoSpec::array array)

Definition at line 110 of file cargotype.h.

References array.

Referenced by BuildLinkStatsLegend(), PaymentRatesGraphWindow::DrawWidget(), TownViewWindow::DrawWidget(), TruncateCargo(), and IndustryProductionGraphWindow::UpdateStatistics().

◆ IsValid()

bool CargoSpec::IsValid ( ) const
inline

Tests for validity of this cargospec.

Returns
is this cargospec valid?
Note
assert(cs->IsValid()) can be triggered when GRF config is modified

Definition at line 120 of file cargotype.h.

References INVALID_CARGO_BITNUM.

Referenced by LinkGraphOverlay::AddLinks(), CargoChangeInfo(), LinkGraphOverlay::RebuildCache(), and StationsWndShowStationRating().

◆ Iterate()

static IterateWrapper CargoSpec::Iterate ( size_t  from = 0)
inlinestatic

Returns an iterable ensemble of all valid CargoSpec.

Parameters
fromindex of the first CargoSpec to consider
Returns
an iterable ensemble of all valid CargoSpec

Definition at line 195 of file cargotype.h.

Referenced by BuildCargoTranslationMap(), CalculateRefitMasks(), FindFirstCargoWithTownAcceptanceEffect(), InitializeSortedCargoSpecs(), IndustryCargoesWindow::OnInit(), RecomputePrices(), and StationResolverObject::StationResolverObject().

◆ WeightOfNUnits()

uint64_t CargoSpec::WeightOfNUnits ( uint32_t  n) const
inline

Definition at line 147 of file cargotype.h.

◆ WeightOfNUnitsInTrain()

uint64_t CargoSpec::WeightOfNUnitsInTrain ( uint32_t  n) const

Definition at line 257 of file cargotype.cpp.

Friends And Related Symbol Documentation

◆ BuildCargoLabelMap

void BuildCargoLabelMap ( )
friend

Build cargo label map.

This is called multiple times during NewGRF initialization as cargos are defined, so that TranslateRefitMask() and GetCargoTranslation(), also used during initialization, get the correct information.

Definition at line 134 of file cargotype.cpp.

◆ FinaliseCargoArray

void FinaliseCargoArray ( )
friend

Check for invalid cargoes.

Definition at line 9324 of file newgrf.cpp.

◆ GetCargoIDByLabel

CargoID GetCargoIDByLabel ( CargoLabel  ct)
friend

Definition at line 219 of file cargotype.h.

◆ SetupCargoForClimate

void SetupCargoForClimate ( LandscapeID  l)
friend

Set up the default cargo types for the given landscape type.

Parameters
lLandscape

Definition at line 64 of file cargotype.cpp.

Field Documentation

◆ abbrev

StringID CargoSpec::abbrev

Two letter abbreviation for this cargo type.

Definition at line 97 of file cargotype.h.

Referenced by CargoChangeInfo(), LinkGraphLegendWindow::DrawWidget(), StationsWndShowStationRating(), and LinkGraphLegendWindow::UpdateWidgetSize().

◆ array

CargoSpec CargoSpec::array
staticprivate

Array holding all CargoSpecs.

Definition at line 201 of file cargotype.h.

Referenced by Get(), GetArraySize(), and Index().

◆ bitnum

uint8_t CargoSpec::bitnum = INVALID_CARGO_BITNUM

Cargo bit number, is INVALID_CARGO_BITNUM for a non-used spec.

Definition at line 78 of file cargotype.h.

Referenced by CargoChangeInfo(), and GenericScopeResolver::GetVariable().

◆ callback_mask

uint8_t CargoSpec::callback_mask

Bitmask of cargo callbacks that have to be called.

Definition at line 91 of file cargotype.h.

Referenced by CargoChangeInfo().

◆ classes

CargoClasses CargoSpec::classes

Classes of this cargo type.

See also
CargoClass

Definition at line 83 of file cargotype.h.

Referenced by CargoChangeInfo(), CargoSpecClassSorter(), CMSAMine(), GetRefitCostFactor(), and VehicleScopeResolver::GetVariable().

◆ current_payment

Money CargoSpec::current_payment

Definition at line 104 of file cargotype.h.

◆ grffile

const struct GRFFile* CargoSpec::grffile

NewGRF where group belongs to.

Definition at line 101 of file cargotype.h.

Referenced by CargoChangeInfo().

◆ group

const struct SpriteGroup* CargoSpec::group

Definition at line 102 of file cargotype.h.

◆ initial_payment

int32_t CargoSpec::initial_payment

Initial payment rate before inflation is applied.

Definition at line 84 of file cargotype.h.

Referenced by CargoChangeInfo().

◆ is_freight

bool CargoSpec::is_freight

Cargo type is considered to be freight (affects train freight multiplier).

Definition at line 87 of file cargotype.h.

Referenced by CargoChangeInfo().

◆ label

CargoLabel CargoSpec::label

Unique label of the cargo type.

Definition at line 77 of file cargotype.h.

Referenced by CargoChangeInfo(), and CargoResolverObject::GetDebugID().

◆ label_map

std::map<CargoLabel, CargoID> CargoSpec::label_map {}
inlinestaticprivate

Translation map from CargoLabel to Cargo ID.

Definition at line 202 of file cargotype.h.

◆ legend_colour

uint8_t CargoSpec::legend_colour

Definition at line 79 of file cargotype.h.

◆ multiplier

uint16_t CargoSpec::multiplier = 0x100

Capacity multiplier for vehicles. (8 fractional bits)

Definition at line 82 of file cargotype.h.

Referenced by CargoChangeInfo(), Engine::DetermineCapacity(), and GetLoadAmount().

◆ name

◆ name_single

StringID CargoSpec::name_single

Name of a single entity of this type of cargo.

Definition at line 94 of file cargotype.h.

Referenced by CargoChangeInfo().

◆ quantifier

StringID CargoSpec::quantifier

Text for multiple units of cargo of this type.

Definition at line 96 of file cargotype.h.

Referenced by CargoChangeInfo(), and FormatString().

◆ rating_colour

uint8_t CargoSpec::rating_colour

Definition at line 80 of file cargotype.h.

◆ sprite

SpriteID CargoSpec::sprite

Icon to display this cargo type, may be 0xFFF (which means to resolve an action123 chain).

Definition at line 99 of file cargotype.h.

Referenced by CargoChangeInfo(), and GetCargoIcon().

◆ town_acceptance_effect

TownAcceptanceEffect CargoSpec::town_acceptance_effect

The effect that delivering this cargo type has on towns. Also affects destination of subsidies.

Definition at line 88 of file cargotype.h.

Referenced by AfterLoadGame(), CargoChangeInfo(), and DeliverGoods().

◆ town_production_cargoes

std::array< std::vector< const CargoSpec * >, NUM_TPE > CargoSpec::town_production_cargoes {}
static

◆ town_production_effect

TownProductionEffect CargoSpec::town_production_effect = INVALID_TPE

The effect on town cargo production.

Definition at line 89 of file cargotype.h.

Referenced by CargoChangeInfo(), CargoesRow::ConnectIndustryProduced(), and IndustryCargoesWindow::HousesCanSupply().

◆ town_production_multiplier

uint16_t CargoSpec::town_production_multiplier = TOWN_PRODUCTION_DIVISOR

Town production multipler, if commanded by TownProductionEffect.

Definition at line 90 of file cargotype.h.

Referenced by CargoChangeInfo().

◆ transit_periods

uint8_t CargoSpec::transit_periods[2]

Definition at line 85 of file cargotype.h.

◆ units_volume

StringID CargoSpec::units_volume

Name of a single unit of cargo of this type.

Definition at line 95 of file cargotype.h.

Referenced by CargoChangeInfo(), and FormatString().

◆ weight

uint8_t CargoSpec::weight

Weight of a single unit of this cargo type in 1/16 ton (62.5 kg).

Definition at line 81 of file cargotype.h.

Referenced by CargoChangeInfo(), and VehicleScopeResolver::GetVariable().


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