OpenTTD Source 20250205-master-gfd85ab1e2c
Industry Struct Reference

Defines the internal data of a functional industry. More...

#include <industry.h>

Inheritance diagram for Industry:
Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >

Data Structures

struct  AcceptedCargo
 
struct  ProducedCargo
 
struct  ProducedHistory
 

Public Types

using ProducedCargoes = std::vector< ProducedCargo >
 
using AcceptedCargoes = std::vector< AcceptedCargo >
 
- Public Types inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >
typedef struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > Pool
 Type of the pool this item is going to be part of.
 

Public Member Functions

 Industry (TileIndex tile=INVALID_TILE)
 
void RecomputeProductionMultipliers ()
 Recompute #production_rate for current prod_level.
 
bool TileBelongsToIndustry (TileIndex tile) const
 Check if a given tile belongs to this industry.
 
const ProducedCargoGetProduced (size_t slot) const
 Safely get a produced cargo slot, or an empty data if the slot does not exist.
 
const AcceptedCargoGetAccepted (size_t slot) const
 Safely get an accepted cargo slot, or an empty data if the slot does not exist.
 
ProducedCargoes::iterator GetCargoProduced (CargoType cargo)
 Get produced cargo slot for a specific cargo type.
 
ProducedCargoes::const_iterator GetCargoProduced (CargoType cargo) const
 Get produced cargo slot for a specific cargo type (const-variant).
 
AcceptedCargoes::iterator GetCargoAccepted (CargoType cargo)
 Get accepted cargo slot for a specific cargo type.
 
AcceptedCargoes::const_iterator GetCargoAccepted (CargoType cargo) const
 Get accepted cargo slot for a specific cargo type (const-variant).
 
bool IsCargoAccepted () const
 Test if this industry accepts any cargo.
 
bool IsCargoProduced () const
 Test if this industry produces any cargo.
 
bool IsCargoAccepted (CargoType cargo) const
 Test if this industry accepts a specific cargo.
 
bool IsCargoProduced (CargoType cargo) const
 Test if this industry produces a specific cargo.
 
const std::string & GetCachedName () const
 
- Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >
void * operator new (size_t size)
 Allocates space for new Titem.
 
void * operator new (size_t size, size_t index)
 Allocates space for new Titem with given index.
 
void * operator new (size_t, void *ptr)
 Allocates space for new Titem at given memory address.
 
void operator delete (void *p)
 Marks Titem as free.
 

Static Public Member Functions

static IndustryGetByTile (TileIndex tile)
 Get the industry of the given tile.
 
static IndustryGetRandom ()
 Return a random valid industry.
 
static void PostDestructor (size_t index)
 Invalidating some stuff after removing item from the pool.
 
static uint16_t GetIndustryTypeCount (IndustryType type)
 Get the count of industries for this type.
 
- Static Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >
static bool CanAllocateItem (size_t n=1)
 Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function()
 
static bool CleaningPool ()
 Returns current state of pool cleaning - yes or no.
 
static bool IsValidID (size_t index)
 Tests whether given index can be used to get valid (non-nullptr) Titem.
 
static Titem * Get (size_t index)
 Returns Titem with given index.
 
static Titem * GetIfValid (size_t index)
 Returns Titem with given index.
 
static size_t GetPoolSize ()
 Returns first unused index.
 
static size_t GetNumItems ()
 Returns number of valid items in the pool.
 
static void PostDestructor (size_t index)
 Dummy function called after destructor of each member.
 
static Pool::IterateWrapper< Titem > Iterate (size_t from=0)
 Returns an iterable ensemble of all valid Titem.
 

Data Fields

TileArea location
 Location of the industry.
 
Towntown
 Nearest town.
 
Stationneutral_station
 Associated neutral station.
 
ProducedCargoes produced
 produced cargo slots
 
AcceptedCargoes accepted
 accepted cargo slots
 
uint8_t prod_level
 general production level
 
uint16_t counter
 used for animation and/or production (if available cargo)
 
IndustryType type
 type of industry.
 
Owner owner
 owner of the industry. Which SHOULD always be (imho) OWNER_NONE
 
Colours random_colour
 randomized colour of the industry, for display purpose
 
TimerGameEconomy::Year last_prod_year
 last economy year of production
 
uint8_t was_cargo_delivered
 flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry
 
IndustryControlFlags ctlflags
 flags overriding standard behaviours
 
PartOfSubsidy part_of_subsidy
 NOSAVE: is this industry a source/destination of a subsidy?
 
StationList stations_near
 NOSAVE: List of nearby stations.
 
std::string cached_name
 NOSAVE: Cache of the resolved name of the industry.
 
Owner founder
 Founder of the industry.
 
TimerGameCalendar::Date construction_date
 Date of the construction of the industry.
 
uint8_t construction_type
 Way the industry was constructed (.
 
uint8_t selected_layout
 Which tile layout was used when creating the industry.
 
Owner exclusive_supplier
 Which company has exclusive rights to deliver cargo (INVALID_OWNER = anyone)
 
Owner exclusive_consumer
 Which company has exclusive rights to take cargo (INVALID_OWNER = anyone)
 
std::string text
 General text with additional information.
 
uint16_t random
 Random value used for randomisation of all kinds of things.
 
PersistentStoragepsa
 Persistent storage for NewGRF industries.
 
- Data Fields inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >
Tindex index
 Index of this pool item.
 

Static Public Attributes

static std::array< std::vector< IndustryID >, NUM_INDUSTRYTYPESindustries
 List of industries of each type.
 

Private Member Functions

void FillCachedName () const
 

Detailed Description

Defines the internal data of a functional industry.

Definition at line 66 of file industry.h.

Member Typedef Documentation

◆ AcceptedCargoes

using Industry::AcceptedCargoes = std::vector<AcceptedCargo>

Definition at line 92 of file industry.h.

◆ ProducedCargoes

using Industry::ProducedCargoes = std::vector<ProducedCargo>

Definition at line 91 of file industry.h.

Constructor & Destructor Documentation

◆ Industry()

Industry::Industry ( TileIndex  tile = INVALID_TILE)
inline

Definition at line 125 of file industry.h.

◆ ~Industry()

Industry::~Industry ( )

Definition at line 143 of file industry_cmd.cpp.

Member Function Documentation

◆ FillCachedName()

void Industry::FillCachedName ( ) const
private

Definition at line 2525 of file industry_cmd.cpp.

◆ GetAccepted()

const AcceptedCargo & Industry::GetAccepted ( size_t  slot) const
inline

Safely get an accepted cargo slot, or an empty data if the slot does not exist.

Parameters
slotaccepted cargo slot to retrieve.
Returns
the real slot, or an empty slot.

Definition at line 156 of file industry.h.

Referenced by IndustriesScopeResolver::GetVariable().

◆ GetByTile()

◆ GetCachedName()

const std::string & Industry::GetCachedName ( ) const
inline

Definition at line 257 of file industry.h.

◆ GetCargoAccepted() [1/2]

AcceptedCargoes::iterator Industry::GetCargoAccepted ( CargoType  cargo)
inline

Get accepted cargo slot for a specific cargo type.

Parameters
cargoCargoType to find.
Returns
Iterator pointing to accepted cargo slot if it exists, or the end iterator.

Definition at line 189 of file industry.h.

References Industry::AcceptedCargo::cargo, and IsValidCargoType().

Referenced by DeliverGoodsToIndustry(), IndustriesScopeResolver::GetVariable(), and IndustryProductionCallback().

◆ GetCargoAccepted() [2/2]

AcceptedCargoes::const_iterator Industry::GetCargoAccepted ( CargoType  cargo) const
inline

Get accepted cargo slot for a specific cargo type (const-variant).

Parameters
cargoCargoType to find.
Returns
Iterator pointing to accepted cargo slot if it exists, or the end iterator.

Definition at line 200 of file industry.h.

References Industry::AcceptedCargo::cargo, and IsValidCargoType().

◆ GetCargoProduced() [1/2]

ProducedCargoes::iterator Industry::GetCargoProduced ( CargoType  cargo)
inline

Get produced cargo slot for a specific cargo type.

Parameters
cargoCargoType to find.
Returns
Iterator pointing to produced cargo slot if it exists, or the end iterator.

Definition at line 167 of file industry.h.

References Industry::ProducedCargo::cargo, and IsValidCargoType().

Referenced by IndustriesScopeResolver::GetVariable(), IndustryProductionCallback(), and IndustryDirectoryWindow::IndustryProductionSorter().

◆ GetCargoProduced() [2/2]

ProducedCargoes::const_iterator Industry::GetCargoProduced ( CargoType  cargo) const
inline

Get produced cargo slot for a specific cargo type (const-variant).

Parameters
cargoCargoType to find.
Returns
Iterator pointing to produced cargo slot if it exists, or the end iterator.

Definition at line 178 of file industry.h.

References Industry::ProducedCargo::cargo, and IsValidCargoType().

◆ GetIndustryTypeCount()

static uint16_t Industry::GetIndustryTypeCount ( IndustryType  type)
inlinestatic

Get the count of industries for this type.

Parameters
typeIndustryType to query
Precondition
type < NUM_INDUSTRYTYPES

Definition at line 251 of file industry.h.

References industries, NUM_INDUSTRYTYPES, and type.

Referenced by CheckIndustries(), CheckIndustryCloseDownProtection(), BuildIndustryWindow::DrawWidget(), SmallMapWindow::DrawWidget(), GetCountAndDistanceOfClosestInstance(), and IndustryBuildData::TryBuildNewIndustry().

◆ GetProduced()

const ProducedCargo & Industry::GetProduced ( size_t  slot) const
inline

Safely get a produced cargo slot, or an empty data if the slot does not exist.

Parameters
slotproduced cargo slot to retrieve.
Returns
the real slot, or an empty slot.

Definition at line 145 of file industry.h.

Referenced by ChangeIndustryProduction(), and IndustriesScopeResolver::GetVariable().

◆ GetRandom()

◆ IsCargoAccepted() [1/2]

bool Industry::IsCargoAccepted ( ) const
inline

Test if this industry accepts any cargo.

Returns
true iff the industry accepts any cargo.

Definition at line 210 of file industry.h.

References IsValidCargoType().

Referenced by Station::AddIndustryToDeliver(), CanCargoServiceIndustry(), FindSubsidyCargoDestination(), and IndustryTemporarilyRefusesCargo().

◆ IsCargoAccepted() [2/2]

bool Industry::IsCargoAccepted ( CargoType  cargo) const
inline

Test if this industry accepts a specific cargo.

Parameters
cargoCargo type to test.
Returns
true iff the industry accepts the given cargo type.

Definition at line 223 of file industry.h.

◆ IsCargoProduced() [1/2]

bool Industry::IsCargoProduced ( ) const
inline

Test if this industry produces any cargo.

Returns
true iff the industry produces any cargo.

Definition at line 216 of file industry.h.

References IsValidCargoType().

Referenced by CanCargoServiceIndustry().

◆ IsCargoProduced() [2/2]

bool Industry::IsCargoProduced ( CargoType  cargo) const
inline

Test if this industry produces a specific cargo.

Parameters
cargoCargo type to test.
Returns
true iff the industry produces the given cargo types.

Definition at line 230 of file industry.h.

◆ PostDestructor()

void Industry::PostDestructor ( size_t  index)
static

Invalidating some stuff after removing item from the pool.

Parameters
indexindex of deleted item

Definition at line 212 of file industry_cmd.cpp.

References InvalidateWindowData(), SetWindowDirty(), WC_BUILD_INDUSTRY, and WC_INDUSTRY_DIRECTORY.

◆ RecomputeProductionMultipliers()

void Industry::RecomputeProductionMultipliers ( )

Recompute #production_rate for current prod_level.

This function is only valid when not using smooth economy.

Definition at line 2514 of file industry_cmd.cpp.

References CeilDiv(), GetIndustrySpec(), PRODLEVEL_DEFAULT, produced, and IndustrySpec::UsesOriginalEconomy().

Referenced by ChangeIndustryProduction(), CmdIndustrySetProduction(), and DoCreateNewIndustry().

◆ TileBelongsToIndustry()

bool Industry::TileBelongsToIndustry ( TileIndex  tile) const
inline

Check if a given tile belongs to this industry.

Parameters
tileThe tile to check.
Returns
True if the tile is part of this industry.

Definition at line 135 of file industry.h.

References GetIndustryIndex(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >::index, IsTileType(), and MP_INDUSTRY.

Referenced by ChopLumberMillTrees(), GetIndustryIDAtOffset(), IndustriesScopeResolver::GetVariable(), and TriggerIndustry().

Field Documentation

◆ accepted

◆ cached_name

std::string Industry::cached_name
mutable

NOSAVE: Cache of the resolved name of the industry.

Definition at line 111 of file industry.h.

◆ construction_date

TimerGameCalendar::Date Industry::construction_date

Date of the construction of the industry.

Definition at line 114 of file industry.h.

Referenced by DoCreateNewIndustry(), and IndustriesScopeResolver::GetVariable().

◆ construction_type

uint8_t Industry::construction_type

Way the industry was constructed (.

See also
IndustryConstructionType)

Definition at line 115 of file industry.h.

Referenced by DoCreateNewIndustry(), and IndustriesScopeResolver::GetVariable().

◆ counter

uint16_t Industry::counter

used for animation and/or production (if available cargo)

Definition at line 100 of file industry.h.

Referenced by DoCreateNewIndustry(), and IndustriesScopeResolver::GetVariable().

◆ ctlflags

IndustryControlFlags Industry::ctlflags

◆ exclusive_consumer

Owner Industry::exclusive_consumer

Which company has exclusive rights to take cargo (INVALID_OWNER = anyone)

Definition at line 118 of file industry.h.

Referenced by CmdIndustrySetExclusivity(), DoCreateNewIndustry(), and TransportIndustryGoods().

◆ exclusive_supplier

Owner Industry::exclusive_supplier

Which company has exclusive rights to deliver cargo (INVALID_OWNER = anyone)

Definition at line 117 of file industry.h.

Referenced by CmdIndustrySetExclusivity(), DeliverGoodsToIndustry(), and DoCreateNewIndustry().

◆ founder

Owner Industry::founder

◆ industries

std::array< std::vector< IndustryID >, NUM_INDUSTRYTYPES > Industry::industries
static

◆ last_prod_year

TimerGameEconomy::Year Industry::last_prod_year

last economy year of production

Definition at line 105 of file industry.h.

Referenced by ChangeIndustryProduction(), DoCreateNewIndustry(), IndustriesScopeResolver::GetVariable(), and UpdateIndustryStatistics().

◆ location

◆ neutral_station

◆ owner

Owner Industry::owner

owner of the industry. Which SHOULD always be (imho) OWNER_NONE

Definition at line 103 of file industry.h.

Referenced by DoCreateNewIndustry().

◆ part_of_subsidy

PartOfSubsidy Industry::part_of_subsidy

NOSAVE: is this industry a source/destination of a subsidy?

Definition at line 109 of file industry.h.

◆ prod_level

◆ produced

◆ psa

◆ random

uint16_t Industry::random

Random value used for randomisation of all kinds of things.

Definition at line 121 of file industry.h.

Referenced by CheckIfCallBackAllowsCreation(), DoCreateNewIndustry(), DoReseedIndustry(), IndustriesScopeResolver::GetRandomBits(), and PerformIndustryTileSlopeCheck().

◆ random_colour

Colours Industry::random_colour

randomized colour of the industry, for display purpose

Definition at line 104 of file industry.h.

Referenced by DoCreateNewIndustry(), and IndustriesScopeResolver::GetVariable().

◆ selected_layout

uint8_t Industry::selected_layout

Which tile layout was used when creating the industry.

Definition at line 116 of file industry.h.

Referenced by CheckIfCallBackAllowsCreation(), DoCreateNewIndustry(), GetCountAndDistanceOfClosestInstance(), and IndustriesScopeResolver::GetVariable().

◆ stations_near

StationList Industry::stations_near

NOSAVE: List of nearby stations.

Definition at line 110 of file industry.h.

Referenced by PopulateStationsNearby(), Station::RecomputeCatchment(), TransportIndustryGoods(), and WhoCanServiceIndustry().

◆ text

std::string Industry::text

General text with additional information.

Definition at line 119 of file industry.h.

Referenced by CmdIndustrySetText(), and IndustryViewWindow::DrawInfo().

◆ town

◆ type

◆ was_cargo_delivered

uint8_t Industry::was_cargo_delivered

flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry

Definition at line 106 of file industry.h.

Referenced by DoCreateNewIndustry(), IndustriesScopeResolver::GetVariable(), and TriggerIndustryProduction().


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