OpenTTD Source  12.0-beta2
cargotype.h File Reference
#include "economy_type.h"
#include "cargo_type.h"
#include "gfx_type.h"
#include "strings_type.h"
#include "landscape_type.h"
#include "core/bitmath_func.hpp"
#include "core/span_type.hpp"
#include <vector>

Go to the source code of this file.

Data Structures

struct  CargoSpec
 Specification of a cargo type. More...
 
struct  CargoSpec::Iterator
 Iterator to iterate all valid CargoSpec. More...
 
struct  CargoSpec::IterateWrapper
 

Typedefs

typedef uint32 CargoLabel
 Globally unique label of a cargo type.
 
using SetCargoBitIterator = SetBitIterator< CargoID, CargoTypes >
 

Enumerations

enum  TownEffect {
  TE_BEGIN = 0, TE_NONE = TE_BEGIN, TE_PASSENGERS, TE_MAIL,
  TE_GOODS, TE_WATER, TE_FOOD, TE_END,
  NUM_TE = TE_END
}
 Town growth effect when delivering cargo. More...
 
enum  CargoClass {
  CC_NOAVAILABLE = 0, CC_PASSENGERS = 1 << 0, CC_MAIL = 1 << 1, CC_EXPRESS = 1 << 2,
  CC_ARMOURED = 1 << 3, CC_BULK = 1 << 4, CC_PIECE_GOODS = 1 << 5, CC_LIQUID = 1 << 6,
  CC_REFRIGERATED = 1 << 7, CC_HAZARDOUS = 1 << 8, CC_COVERED = 1 << 9, CC_SPECIAL = 1 << 15
}
 Cargo classes. More...
 

Functions

void SetupCargoForClimate (LandscapeID l)
 Set up the default cargo types for the given landscape type. More...
 
CargoID GetCargoIDByLabel (CargoLabel cl)
 Get the cargo ID by cargo label. More...
 
CargoID GetCargoIDByBitnum (uint8 bitnum)
 Find the CargoID of a 'bitnum' value. More...
 
CargoID GetDefaultCargoID (LandscapeID l, CargoType ct)
 Get the cargo ID of a default cargo, if present. More...
 
void InitializeSortedCargoSpecs ()
 Initialize the list of sorted cargo specifications.
 
static bool IsCargoInClass (CargoID c, CargoClass cc)
 Does cargo c have cargo class cc? More...
 

Variables

static const byte INVALID_CARGO = 0xFF
 Constant representing invalid cargo.
 
CargoTypes _cargo_mask
 Bitmask of cargo types available. More...
 
CargoTypes _standard_cargo_mask
 Bitmask of real cargo types available. More...
 
std::vector< const CargoSpec * > _sorted_cargo_specs
 Cargo specifications sorted alphabetically by name.
 
span< const CargoSpec * > _sorted_standard_cargo_specs
 Standard cargo specifications sorted alphabetically by name.
 

Detailed Description

Types/functions related to cargoes.

Definition in file cargotype.h.

Enumeration Type Documentation

◆ CargoClass

enum CargoClass

Cargo classes.

Enumerator
CC_NOAVAILABLE 

No cargo class has been specified.

CC_PASSENGERS 

Passengers.

CC_MAIL 

Mail.

CC_EXPRESS 

Express cargo (Goods, Food, Candy, but also possible for passengers)

CC_ARMOURED 

Armoured cargo (Valuables, Gold, Diamonds)

CC_BULK 

Bulk cargo (Coal, Grain etc., Ores, Fruit)

CC_PIECE_GOODS 

Piece goods (Livestock, Wood, Steel, Paper)

CC_LIQUID 

Liquids (Oil, Water, Rubber)

CC_REFRIGERATED 

Refrigerated cargo (Food, Fruit)

CC_HAZARDOUS 

Hazardous cargo (Nuclear Fuel, Explosives, etc.)

CC_COVERED 

Covered/Sheltered Freight (Transportation in Box Vans, Silo Wagons, etc.)

CC_SPECIAL 

Special bit used for livery refit tricks instead of normal cargoes.

Definition at line 39 of file cargotype.h.

◆ TownEffect

enum TownEffect

Town growth effect when delivering cargo.

Enumerator
TE_NONE 

Cargo has no effect.

TE_PASSENGERS 

Cargo behaves passenger-like.

TE_MAIL 

Cargo behaves mail-like.

TE_GOODS 

Cargo behaves goods/candy-like.

TE_WATER 

Cargo behaves water-like.

TE_FOOD 

Cargo behaves food/fizzy-drinks-like.

TE_END 

End of town effects.

NUM_TE 

Amount of town effects.

Definition at line 26 of file cargotype.h.

Function Documentation

◆ GetCargoIDByBitnum()

CargoID GetCargoIDByBitnum ( uint8  bitnum)

Find the CargoID of a 'bitnum' value.

Parameters
bitnum'bitnum' to find.
Returns
First CargoID with the given bitnum, or CT_INVALID if not found or if the provided bitnum is invalid.

Definition at line 123 of file cargotype.cpp.

References CT_INVALID, INVALID_CARGO, and CargoSpec::Iterate().

Referenced by GetCargoTranslation().

◆ GetCargoIDByLabel()

CargoID GetCargoIDByLabel ( CargoLabel  cl)

Get the cargo ID by cargo label.

Parameters
clCargo type to get.
Returns
ID number if the cargo exists, else CT_INVALID

Definition at line 107 of file cargotype.cpp.

References CT_INVALID, and CargoSpec::Iterate().

Referenced by GetCargoTranslation(), and GetDefaultCargoID().

◆ GetDefaultCargoID()

CargoID GetDefaultCargoID ( LandscapeID  l,
CargoType  ct 
)

Get the cargo ID of a default cargo, if present.

Parameters
lLandscape
ctDefault cargo type.
Returns
ID number if the cargo exists, else CT_INVALID

Definition at line 86 of file cargotype.cpp.

References _default_cargo, _default_climate_cargo, CT_INVALID, GetCargoIDByLabel(), CargoSpec::label, and lengthof.

◆ IsCargoInClass()

static bool IsCargoInClass ( CargoID  c,
CargoClass  cc 
)
inlinestatic

Does cargo c have cargo class cc?

Parameters
cCargo type.
ccCargo class.
Returns
The type fits in the class.

Definition at line 194 of file cargotype.h.

References CargoSpec::Get().

Referenced by Vehicle::Crash(), Engine::DetermineCapacity(), RoadVehicle::IsBus(), and UpdateStationAcceptance().

◆ SetupCargoForClimate()

void SetupCargoForClimate ( LandscapeID  l)

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

Parameters
lLandscape

Definition at line 39 of file cargotype.cpp.

References _cargo_mask, _default_cargo, _default_climate_cargo, CargoSpec::array, CargoSpec::bitnum, CargoSpec::Get(), INVALID_CARGO, lengthof, CargoSpec::multiplier, and SetBit().

Variable Documentation

◆ _cargo_mask

CargoTypes _cargo_mask

Bitmask of cargo types available.

This includes phony cargoes like regearing cargoes. Initialized during a call to SetupCargoForClimate.

Definition at line 28 of file cargotype.cpp.

Referenced by CompanyStationsWindow::OnClick(), and SetupCargoForClimate().

◆ _standard_cargo_mask

CargoTypes _standard_cargo_mask

Bitmask of real cargo types available.

Phony cargoes like regearing cargoes are excluded.

Definition at line 33 of file cargotype.cpp.

Referenced by CargoAndEngineFilter(), and InitializeSortedCargoSpecs().