OpenTTD Source  20240919-master-gdf0233f4c2
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. More...
 
bool TileBelongsToIndustry (TileIndex tile) const
 Check if a given tile belongs to this industry. More...
 
const ProducedCargoGetProduced (size_t slot) const
 Safely get a produced cargo slot, or an empty data if the slot does not exist. More...
 
const AcceptedCargoGetAccepted (size_t slot) const
 Safely get an accepted cargo slot, or an empty data if the slot does not exist. More...
 
ProducedCargoes::iterator GetCargoProduced (CargoID cargo)
 Get produced cargo slot for a specific cargo type. More...
 
ProducedCargoes::const_iterator GetCargoProduced (CargoID cargo) const
 Get produced cargo slot for a specific cargo type (const-variant). More...
 
AcceptedCargoes::iterator GetCargoAccepted (CargoID cargo)
 Get accepted cargo slot for a specific cargo type. More...
 
AcceptedCargoes::const_iterator GetCargoAccepted (CargoID cargo) const
 Get accepted cargo slot for a specific cargo type (const-variant). More...
 
bool IsCargoAccepted () const
 Test if this industry accepts any cargo. More...
 
bool IsCargoProduced () const
 Test if this industry produces any cargo. More...
 
bool IsCargoAccepted (CargoID cargo) const
 Test if this industry accepts a specific cargo. More...
 
bool IsCargoProduced (CargoID cargo) const
 Test if this industry produces a specific cargo. More...
 
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. More...
 
void * operator new (size_t size, size_t index)
 Allocates space for new Titem with given index. More...
 
void * operator new (size_t, void *ptr)
 Allocates space for new Titem at given memory address. More...
 
void operator delete (void *p)
 Marks Titem as free. More...
 

Static Public Member Functions

static IndustryGetByTile (TileIndex tile)
 Get the industry of the given tile. More...
 
static IndustryGetRandom ()
 Return a random valid industry. More...
 
static void PostDestructor (size_t index)
 Invalidating some stuff after removing item from the pool. More...
 
static void IncIndustryTypeCount (IndustryType type)
 Increment the count of industries for this type. More...
 
static void DecIndustryTypeCount (IndustryType type)
 Decrement the count of industries for this type. More...
 
static uint16_t GetIndustryTypeCount (IndustryType type)
 Get the count of industries for this type. More...
 
static void ResetIndustryCounts ()
 Resets industry counts.
 
- 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() More...
 
static bool CleaningPool ()
 Returns current state of pool cleaning - yes or no. More...
 
static bool IsValidID (size_t index)
 Tests whether given index can be used to get valid (non-nullptr) Titem. More...
 
static Titem * Get (size_t index)
 Returns Titem with given index. More...
 
static Titem * GetIfValid (size_t index)
 Returns Titem with given index. More...
 
static size_t GetPoolSize ()
 Returns first unused index. More...
 
static size_t GetNumItems ()
 Returns number of valid items in the pool. More...
 
static void PostDestructor ([[maybe_unused]] size_t index)
 Dummy function called after destructor of each member. More...
 
static Pool::IterateWrapper< Titem > Iterate (size_t from=0)
 Returns an iterable ensemble of all valid Titem. More...
 

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 (. More...
 
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 Protected Attributes

static uint16_t counts [NUM_INDUSTRYTYPES]
 Number of industries per type ingame.
 

Private Member Functions

void FillCachedName () const
 

Detailed Description

Defines the internal data of a functional industry.

Definition at line 68 of file industry.h.

Member Function Documentation

◆ DecIndustryTypeCount()

static void Industry::DecIndustryTypeCount ( IndustryType  type)
inlinestatic

Decrement the count of industries for this type.

Parameters
typeIndustryType to decrement
Precondition
type < NUM_INDUSTRYTYPES

Definition at line 264 of file industry.h.

References counts, NUM_INDUSTRYTYPES, and type.

◆ 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 158 of file industry.h.

◆ GetByTile()

◆ GetCargoAccepted() [1/2]

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

Get accepted cargo slot for a specific cargo type.

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

Definition at line 191 of file industry.h.

References IsValidCargoID().

Referenced by DeliverGoodsToIndustry().

◆ GetCargoAccepted() [2/2]

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

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

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

Definition at line 202 of file industry.h.

References IsValidCargoID().

◆ GetCargoProduced() [1/2]

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

Get produced cargo slot for a specific cargo type.

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

Definition at line 169 of file industry.h.

References IsValidCargoID().

◆ GetCargoProduced() [2/2]

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

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

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

Definition at line 180 of file industry.h.

References IsValidCargoID().

◆ 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 275 of file industry.h.

Referenced by CheckIndustries(), GetCurrentTotalNumberOfIndustries(), 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 147 of file industry.h.

◆ GetRandom()

Industry * Industry::GetRandom ( )
static

Return a random valid industry.

Returns
random industry, nullptr if there are no industries

Definition at line 221 of file industry_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >::GetNumItems(), and RandomRange().

Referenced by FindSubsidyIndustryCargoRoute().

◆ IncIndustryTypeCount()

static void Industry::IncIndustryTypeCount ( IndustryType  type)
inlinestatic

Increment the count of industries for this type.

Parameters
typeIndustryType to increment
Precondition
type < NUM_INDUSTRYTYPES

Definition at line 253 of file industry.h.

References counts, NUM_INDUSTRYTYPES, and type.

◆ 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 212 of file industry.h.

References IsValidCargoID().

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

◆ IsCargoAccepted() [2/2]

bool Industry::IsCargoAccepted ( CargoID  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 225 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 218 of file industry.h.

References IsValidCargoID().

Referenced by CanCargoServiceIndustry().

◆ IsCargoProduced() [2/2]

bool Industry::IsCargoProduced ( CargoID  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 232 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 210 of file industry_cmd.cpp.

References InvalidateWindowData(), 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 2531 of file industry_cmd.cpp.

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

Referenced by CmdIndustrySetProduction().

◆ 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 137 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(), and TriggerIndustry().

Field Documentation

◆ construction_type

uint8_t Industry::construction_type

Way the industry was constructed (.

See also
IndustryConstructionType)

Definition at line 117 of file industry.h.


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