OpenTTD Source: CargoSpec Struct Reference

OpenTTD Source 14.0-beta3

Data Structures | Public Member Functions | Static Public Member Functions | Data Fields | Static Public Attributes | Static Private Attributes | Friends
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. More...
bool | IsValid () const
| Tests for validity of this cargospec. More...
SpriteID | GetCargoIcon () const
| Get sprite for showing cargo of this type. More...
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. More...
static CargoSpec * | Get (size_t index)
| Retrieve cargo details for the given cargo ID. More...
static IterateWrapper | Iterate (size_t from=0)
| Returns an iterable ensemble of all valid CargoSpec. More...

## 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)
uint16_t | classes
| Classes of this cargo type. More...
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 GRFFile * | grffile
| NewGRF where #group belongs to.
const struct SpriteGroup * | group
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, CargoID > | label_map {}
| Translation map from CargoLabel to Cargo ID.

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

## Detailed Description

Specification of a cargo type.

Definition at line 68 of file cargotype.h.

## Member Function Documentation

## ◆ Get()

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

Retrieve cargo details for the given cargo ID.

Parameters

  index | ID of cargo

Precondition
  index is a valid cargo ID

Definition at line 131 of file cargotype.h.

References array, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_spritegroup_pool >::index, and lengthof.

Referenced by BuildReplacementVehicle(), CmdCreateSubsidy(), CMSAMine(), FreightWagonMult(), GetCargoTranslation(), GetRefitCostFactor(), VehicleScopeResolver::GetVariable(), GenericScopeResolver::GetVariable(), IndustryCargoesWindow::HousesCanSupply(), IsCargoInClass(), IsDefaultCargo(), BuildIndustryWindow::MakeCargoListString(), and SetupSubsidyDecodeParam().

## ◆ GetArraySize()

static size_t CargoSpec::GetArraySize | ( |  | ) |
| inlinestatic

Total number of cargospecs, both valid and invalid.

Returns
  length of CargoSpec::array

Definition at line 121 of file cargotype.h.

References array, and lengthof.

Referenced by GetCargoTranslation().

## ◆ GetCargoIcon()

SpriteID CargoSpec::GetCargoIcon | ( |  | ) | const

Get sprite for showing cargo of this type.

Returns
  Sprite number to use.

Definition at line 154 of file cargotype.cpp.

References GetCustomCargoSprite(), and sprite.

## ◆ Index()

CargoID CargoSpec::Index | ( |  | ) | const
| inline

Determines index of this cargospec.

Returns
  index (in the CargoSpec::array array)

Definition at line 102 of file cargotype.h.

References array.

Referenced by BuildLinkStatsLegend(), StationViewWindow::DrawCargoRatings(), and TruncateCargo().

## ◆ 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 112 of file cargotype.h.

References bitnum, and INVALID_CARGO_BITNUM.

## ◆ Iterate()

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

Returns an iterable ensemble of all valid CargoSpec.

Parameters

  from | index of the first CargoSpec to consider

Returns
  an iterable ensemble of all valid CargoSpec

Definition at line 187 of file cargotype.h.

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

## Friends And Related Function 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 93 of file cargotype.cpp.

## ◆ SetupCargoForClimate

void SetupCargoForClimate | ( | LandscapeID | l | ) |
| friend

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

Parameters

  l | Landscape

Definition at line 48 of file cargotype.cpp.

## Field Documentation

## ◆ classes

uint16_t CargoSpec::classes

Classes of this cargo type.

See also
  CargoClass

Definition at line 75 of file cargotype.h.

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

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

- src/cargotype.h
- src/cargotype.cpp