cargotype.h File Reference

Types/functions related to cargos. More...

#include "economy_type.h"
#include "cargo_type.h"
#include "gfx_type.h"
#include "strings_type.h"
#include "landscape_type.h"

Go to the source code of this file.

Data Structures

struct  CargoSpec
 Specification of a cargo type. More...

Defines

#define FOR_ALL_CARGOSPECS_FROM(var, start)
#define FOR_ALL_CARGOSPECS(var)   FOR_ALL_CARGOSPECS_FROM(var, 0)
#define FOR_EACH_SET_CARGO_ID(var, cargo_bits)   FOR_EACH_SET_BIT_EX(CargoID, var, uint, cargo_bits)
#define FOR_ALL_SORTED_CARGOSPECS(var)   for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_cargo_specs_size; index++)
#define FOR_ALL_SORTED_STANDARD_CARGOSPECS(var)   for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_standard_cargo_specs_size; index++)

Typedefs

typedef uint32 CargoLabel
 Globally unique label of a cargo type.

Enumerations

enum  TownEffect {
  TE_NONE, TE_PASSENGERS, TE_MAIL, TE_GOODS,
  TE_WATER, TE_FOOD
}
 

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.
CargoID GetCargoIDByLabel (CargoLabel cl)
 Get the cargo ID by cargo label.
CargoID GetCargoIDByBitnum (uint8 bitnum)
 Find the CargoID of a 'bitnum' value.
void InitializeSortedCargoSpecs ()
 Initialize the list of sorted cargo specifications.
static bool IsCargoInClass (CargoID c, CargoClass cc)
 Does cargo c have cargo class cc?

Variables

static const byte INVALID_CARGO = 0xFF
 Constant representing invalid cargo.
uint32 _cargo_mask
 Bitmask of cargo types available.
const CargoSpec_sorted_cargo_specs [NUM_CARGO]
 Cargo specifications sorted alphabetically by name.
uint8 _sorted_cargo_specs_size
 Number of cargo specifications stored at the _sorted_cargo_specs array (including special cargos).
uint8 _sorted_standard_cargo_specs_size
 Number of standard cargo specifications stored at the _sorted_cargo_specs array.

Detailed Description

Types/functions related to cargos.

Definition in file cargotype.h.


Define Documentation

#define FOR_ALL_CARGOSPECS_FROM ( var,
start   ) 
Value:
for (size_t cargospec_index = start; var = NULL, cargospec_index < CargoSpec::GetArraySize(); cargospec_index++) \
    if ((var = CargoSpec::Get(cargospec_index))->IsValid())

Definition at line 150 of file cargotype.h.


Typedef Documentation

typedef uint32 CargoLabel

Globally unique label of a cargo type.

Definition at line 22 of file cargotype.h.


Enumeration Type Documentation

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 (Transporation in Box Vans, Silo Wagons, etc.).

CC_SPECIAL 

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

Definition at line 35 of file cargotype.h.

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.

Definition at line 25 of file cargotype.h.


Function Documentation

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 94 of file cargotype.cpp.

References CargoSpec::bitnum, CT_INVALID, CargoSpec::Index(), and INVALID_CARGO.

CargoID GetCargoIDByLabel ( CargoLabel  cl  ) 

Get the cargo ID by cargo label.

Parameters:
cl Cargo type to get.
Returns:
ID number if the cargo exists, else CT_INVALID

Definition at line 77 of file cargotype.cpp.

References CT_INVALID, CargoSpec::Index(), and CargoSpec::label.

Referenced by CalculateRefitMasks().

void InitializeSortedCargoSpecs (  ) 

Initialize the list of sorted cargo specifications.

Definition at line 162 of file cargotype.cpp.

References _sorted_cargo_specs_size, _sorted_standard_cargo_specs_size, CargoSpecClassSorter(), CC_SPECIAL, CargoSpec::classes, and QSortT().

Referenced by ReadLanguagePack().

static bool IsCargoInClass ( CargoID  c,
CargoClass  cc 
) [inline, static]

Does cargo c have cargo class cc?

Parameters:
c Cargo type.
cc Cargo class.
Returns:
The type fits in the class.

Definition at line 145 of file cargotype.h.

References CargoSpec::Get().

Referenced by Vehicle::Crash(), DrawStationCoverageAreaText(), Engine::GetDisplayDefaultCapacity(), GetEngineLiveryScheme(), GetVehicleCapacity(), AICargo::HasCargoClass(), RoadVehicle::IsBus(), LoadUnloadVehicle(), and UpdateStationAcceptance().

void SetupCargoForClimate ( LandscapeID  l  ) 

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

Parameters:
l Landscape

Definition at line 36 of file cargotype.cpp.

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

Referenced by ResetNewGRFData().


Variable Documentation

uint32 _cargo_mask

Bitmask of cargo types available.

Initialized during a call to SetupCargoForClimate.

Definition at line 30 of file cargotype.cpp.

Referenced by CalculateRefitMasks(), CompanyStationsWindow::OnClick(), SetupCargoForClimate(), ShipVehicleChangeInfo(), and ShowRefitOptionsList().


Generated on Sun Jun 5 04:20:08 2011 for OpenTTD by  doxygen 1.6.1