OpenTTD Source 20250205-master-gfd85ab1e2c
|
Types/functions related to cargoes. More...
#include "economy_type.h"
#include "cargo_type.h"
#include "gfx_type.h"
#include "newgrf_callbacks.h"
#include "strings_type.h"
#include "landscape_type.h"
#include "core/bitmath_func.hpp"
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 |
struct | CargoTypeComparator |
Comparator to sort CargoType by according to desired order. More... | |
Typedefs | |
using | CargoClasses = uint16_t |
Bitmask of cargo classes. | |
using | SetCargoBitIterator = SetBitIterator< CargoType, CargoTypes > |
Enumerations | |
enum | TownAcceptanceEffect : uint8_t { TAE_BEGIN = 0 , TAE_NONE = TAE_BEGIN , TAE_PASSENGERS , TAE_MAIL , TAE_GOODS , TAE_WATER , TAE_FOOD , TAE_END , NUM_TAE = TAE_END } |
Town growth effect when delivering cargo. More... | |
enum | TownProductionEffect : uint8_t { TPE_NONE , TPE_PASSENGERS , TPE_MAIL , NUM_TPE , INVALID_TPE } |
Town effect when producing cargo. More... | |
enum | CargoClass : uint16_t { 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_OVERSIZED = 1 << 10 , CC_POWDERIZED = 1 << 11 , CC_NOT_POURABLE = 1 << 12 , CC_POTABLE = 1 << 13 , CC_NON_POTABLE = 1 << 14 , CC_SPECIAL = 1 << 15 } |
Cargo classes. More... | |
Functions | |
void | SetupCargoForClimate (LandscapeType l) |
Set up the default cargo types for the given landscape type. | |
bool | IsDefaultCargo (CargoType cargo_type) |
Test if a cargo is a default cargo type. | |
void | BuildCargoLabelMap () |
Build cargo label map. | |
std::optional< std::string > | BuildCargoAcceptanceString (const CargoArray &acceptance, StringID label) |
Build comma-separated cargo acceptance string. | |
CargoType | GetCargoTypeByLabel (CargoLabel label) |
Dimension | GetLargestCargoIconSize () |
Get dimensions of largest cargo icon. | |
void | InitializeSortedCargoSpecs () |
Initialize the list of sorted cargo specifications. | |
bool | IsCargoInClass (CargoType c, CargoClass cc) |
Does cargo c have cargo class cc? | |
Variables | |
static const uint8_t | INVALID_CARGO_BITNUM = 0xFF |
Constant representing invalid cargo. | |
static const uint | TOWN_PRODUCTION_DIVISOR = 256 |
CargoTypes | _cargo_mask |
Bitmask of cargo types available. | |
CargoTypes | _standard_cargo_mask |
Bitmask of real cargo types available. | |
std::array< uint8_t, NUM_CARGO > | _sorted_cargo_types |
Sort order of cargoes by cargo type. | |
std::vector< const CargoSpec * > | _sorted_cargo_specs |
Cargo specifications sorted alphabetically by name. | |
std::span< const CargoSpec * > | _sorted_standard_cargo_specs |
Standard cargo specifications sorted alphabetically by name. | |
Types/functions related to cargoes.
Definition in file cargotype.h.
using CargoClasses = uint16_t |
Bitmask of cargo classes.
Definition at line 70 of file cargotype.h.
using SetCargoBitIterator = SetBitIterator<CargoType, CargoTypes> |
Definition at line 245 of file cargotype.h.
enum CargoClass : uint16_t |
Cargo classes.
Definition at line 49 of file cargotype.h.
enum TownAcceptanceEffect : uint8_t |
Town growth effect when delivering cargo.
Definition at line 22 of file cargotype.h.
enum TownProductionEffect : uint8_t |
Town effect when producing cargo.
Enumerator | |
---|---|
TPE_NONE | Town will not produce this cargo type. |
TPE_PASSENGERS | Cargo behaves passenger-like for production. |
TPE_MAIL | Cargo behaves mail-like for production. |
INVALID_TPE | Invalid town production effect. Used as a sentinel to indicate if a NewGRF has explicitly set an effect. This does not 'exist' after cargo types are finalised. |
Definition at line 35 of file cargotype.h.
std::optional< std::string > BuildCargoAcceptanceString | ( | const CargoArray & | acceptance, |
StringID | label | ||
) |
Build comma-separated cargo acceptance string.
acceptance | CargoArray filled with accepted cargo. |
label | Label to prefix cargo acceptance list. |
Definition at line 269 of file cargotype.cpp.
References _sorted_cargo_specs, GetListSeparator(), GetString(), and SetDParam().
Referenced by BuildHouseWindow::GetHouseInformation(), and LandInfoWindow::OnInit().
void BuildCargoLabelMap | ( | ) |
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 206 of file cargotype.cpp.
Referenced by CargoChangeInfo().
|
inline |
Definition at line 220 of file cargotype.h.
Dimension GetLargestCargoIconSize | ( | ) |
Get dimensions of largest cargo icon.
Definition at line 165 of file cargotype.cpp.
References _sorted_cargo_specs, GetSpriteSize(), and maxdim().
Referenced by BaseVehicleListWindow::BuildCargoDropDownList(), DrawAircraftImage(), IndustryCargoesWindow::OnClick(), IndustryViewWindow::OnInit(), and SubsidyListWindow::OnInit().
void InitializeSortedCargoSpecs | ( | ) |
Initialize the list of sorted cargo specifications.
Definition at line 225 of file cargotype.cpp.
References _sorted_cargo_specs, _sorted_cargo_types, _sorted_standard_cargo_specs, _standard_cargo_mask, CargoSpecClassSorter(), CC_SPECIAL, INVALID_TPE, CargoSpec::Iterate(), SetBit(), and CargoSpec::town_production_cargoes.
Referenced by AfterLoadGRFs(), and ReadLanguagePack().
|
inline |
Does cargo c have cargo class cc?
c | Cargo type. |
cc | Cargo class. |
Definition at line 240 of file cargotype.h.
References CargoSpec::Get().
Referenced by CargoFilterSingle(), Vehicle::Crash(), Engine::DetermineCapacity(), MultiCommodityFlow::Dijkstra(), DrawStationCoverageAreaText(), GetEngineLiveryScheme(), RoadVehicle::IsBus(), LoadUnloadVehicle(), and UpdateStationAcceptance().
bool IsDefaultCargo | ( | CargoType | cargo_type | ) |
Test if a cargo is a default cargo type.
cargo_type | Cargo type. |
Definition at line 152 of file cargotype.cpp.
References _default_cargo_labels, and CargoSpec::Get().
Referenced by CalculateRefitMasks().
void SetupCargoForClimate | ( | LandscapeType | l | ) |
Set up the default cargo types for the given landscape type.
l | Landscape |
Definition at line 205 of file cargotype.cpp.
Referenced by ResetNewGRFData().
|
extern |
Bitmask of cargo types available.
This includes phony cargoes like regearing cargoes. Initialized during a call to SetupCargoForClimate.
Definition at line 33 of file cargotype.cpp.
Referenced by CalculateRefitMasks(), CargoChangeInfo(), CompanyStationsWindow::OnDropdownSelect(), CompanyStationsWindow::SetStringParameters(), and ShowRefitOptionsList().
|
extern |
Cargo specifications sorted alphabetically by name.
Definition at line 192 of file cargotype.cpp.
Referenced by BuildCargoAcceptanceString(), BaseVehicleListWindow::BuildCargoDropDownList(), BuildLinkStatsLegend(), RefitWindow::BuildRefitList(), DrawRoadVehDetails(), DrawTrainDetails(), LinkGraphLegendWindow::DrawWidget(), FormatString(), GetLargestCargoIconSize(), InitializeSortedCargoSpecs(), LinkGraphLegendWindow::OnInvalidateData(), DepotWindow::OnRightClick(), LinkGraphLegendWindow::OnTooltip(), LinkGraphLegendWindow::SetOverlay(), LinkGraphLegendWindow::UpdateOverlayCargoes(), and LinkGraphLegendWindow::UpdateWidgetSize().
|
extern |
Sort order of cargoes by cargo type.
Definition at line 191 of file cargotype.cpp.
Referenced by InitializeSortedCargoSpecs().
|
extern |
Standard cargo specifications sorted alphabetically by name.
Definition at line 193 of file cargotype.cpp.
Referenced by StationViewWindow::DrawCargoRatings(), PaymentRatesGraphWindow::DrawWidget(), CompanyStationsWindow::DrawWidget(), InitializeSortedCargoSpecs(), PaymentRatesGraphWindow::OnClick(), IndustryCargoesWindow::OnClick(), PaymentRatesGraphWindow::UpdatePaymentRates(), PaymentRatesGraphWindow::UpdateWidgetSize(), and CompanyStationsWindow::UpdateWidgetSize().
|
extern |
Bitmask of real cargo types available.
Phony cargoes like regearing cargoes are excluded.
Definition at line 38 of file cargotype.cpp.
Referenced by CalculateRefitMasks(), CargoAndEngineFilter(), InitializeSortedCargoSpecs(), and BuildVehicleWindow::SetCargoFilterArray().
|
static |
Constant representing invalid cargo.
Definition at line 72 of file cargotype.h.
Referenced by CargoSpec::IsValid().
|
static |
Definition at line 74 of file cargotype.h.