OpenTTD Source 20241224-master-gf74b0cf984
industry.h File Reference

Base of all industries. More...

#include "newgrf_storage.h"
#include "subsidy_type.h"
#include "industry_map.h"
#include "industrytype.h"
#include "tilearea_type.h"
#include "station_base.h"
#include "timer/timer_game_calendar.h"
#include "timer/timer_game_economy.h"

Go to the source code of this file.

Data Structures

struct  Industry
 Defines the internal data of a functional industry. More...
 
struct  Industry::ProducedHistory
 
struct  Industry::ProducedCargo
 
struct  Industry::AcceptedCargo
 
struct  IndustryTypeBuildData
 Data for managing the number of industries of a single industry type. More...
 
struct  IndustryBuildData
 Data for managing the number and type of industries in the game. More...
 

Typedefs

typedef Pool< Industry, IndustryID, 64, 64000 > IndustryPool
 

Enumerations

enum  IndustryControlFlags : uint8_t {
  INDCTL_NONE = 0 , INDCTL_NO_PRODUCTION_DECREASE = 1 << 0 , INDCTL_NO_PRODUCTION_INCREASE = 1 << 1 , INDCTL_NO_CLOSURE = 1 << 2 ,
  INDCTL_EXTERNAL_PROD_LEVEL = 1 << 3 , INDCTL_MASK = INDCTL_NO_PRODUCTION_DECREASE | INDCTL_NO_PRODUCTION_INCREASE | INDCTL_NO_CLOSURE | INDCTL_EXTERNAL_PROD_LEVEL
}
 Flags to control/override the behaviour of an industry. More...
 
enum  IndustryDirectoryInvalidateWindowData { IDIWD_FORCE_REBUILD , IDIWD_PRODUCTION_CHANGE , IDIWD_FORCE_RESORT }
 Special values for the industry list window for the data parameter of InvalidateWindowData. More...
 

Functions

 DECLARE_ENUM_AS_BIT_SET (IndustryControlFlags)
 
void ClearAllIndustryCachedNames ()
 
void PlantRandomFarmField (const Industry *i)
 
void ReleaseDisastersTargetingIndustry (IndustryID)
 Marks all disasters targeting this industry in such a way they won't call Industry::Get(v->dest_tile) on invalid industry anymore.
 
bool IsTileForestIndustry (TileIndex tile)
 Check whether the tile is a forest.
 
void TrimIndustryAcceptedProduced (Industry *ind)
 Remove unused industry accepted/produced slots – entries after the last slot with valid cargo.
 

Variables

IndustryPool _industry_pool
 
static const TimerGameEconomy::Year PROCESSING_INDUSTRY_ABANDONMENT_YEARS = 5
 If a processing industry doesn't produce for this many consecutive economy years, it may close.
 
static constexpr uint8_t PRODLEVEL_CLOSURE = 0x00
 signal set to actually close the industry
 
static constexpr uint8_t PRODLEVEL_MINIMUM = 0x04
 below this level, the industry is set to be closing
 
static constexpr uint8_t PRODLEVEL_DEFAULT = 0x10
 default level set when the industry is created
 
static constexpr uint8_t PRODLEVEL_MAXIMUM = 0x80
 the industry is running at full speed
 
static const int THIS_MONTH = 0
 
static const int LAST_MONTH = 1
 
IndustryBuildData _industry_builder
 In-game manager of industries.
 

Detailed Description

Base of all industries.

Definition in file industry.h.

Typedef Documentation

◆ IndustryPool

typedef Pool<Industry, IndustryID, 64, 64000> IndustryPool

Definition at line 23 of file industry.h.

Enumeration Type Documentation

◆ IndustryControlFlags

enum IndustryControlFlags : uint8_t

Flags to control/override the behaviour of an industry.

These flags are controlled by game scripts.

Enumerator
INDCTL_NONE 

No flags in effect.

INDCTL_NO_PRODUCTION_DECREASE 

When industry production change is evaluated, rolls to decrease are ignored.

INDCTL_NO_PRODUCTION_INCREASE 

When industry production change is evaluated, rolls to increase are ignored.

INDCTL_NO_CLOSURE 

Industry can not close regardless of production level or time since last delivery.

This does not prevent a closure already announced.

INDCTL_EXTERNAL_PROD_LEVEL 

Indicates that the production level of the industry is externally controlled.

INDCTL_MASK 

Mask of all flags set.

Definition at line 42 of file industry.h.

◆ IndustryDirectoryInvalidateWindowData

Special values for the industry list window for the data parameter of InvalidateWindowData.

Definition at line 309 of file industry.h.

Function Documentation

◆ ClearAllIndustryCachedNames()

void ClearAllIndustryCachedNames ( )

Definition at line 2531 of file industry_cmd.cpp.

◆ IsTileForestIndustry()

bool IsTileForestIndustry ( TileIndex  tile)

Check whether the tile is a forest.

Parameters
tilethe tile to investigate.
Returns
true if and only if the tile is a forest

Definition at line 977 of file industry_cmd.cpp.

References Industry::GetByTile(), GetIndustrySpec(), INDUSTRYLIFE_ORGANIC, IsTileType(), IndustrySpec::life_type, MP_INDUSTRY, Industry::produced, and Industry::type.

Referenced by GenerateStationName(), and GetSmallMapVegetationPixels().

◆ PlantRandomFarmField()

void PlantRandomFarmField ( const Industry i)

Definition at line 1091 of file industry_cmd.cpp.

◆ ReleaseDisastersTargetingIndustry()

void ReleaseDisastersTargetingIndustry ( IndustryID  i)

Marks all disasters targeting this industry in such a way they won't call Industry::Get(v->dest_tile) on invalid industry anymore.

Parameters
ideleted industry

Definition at line 966 of file disaster_vehicle.cpp.

References Vehicle::dest_tile, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Iterate(), ST_AIRPLANE, ST_HELICOPTER, DisasterVehicle::state, and Vehicle::subtype.

◆ TrimIndustryAcceptedProduced()

void TrimIndustryAcceptedProduced ( Industry ind)

Remove unused industry accepted/produced slots – entries after the last slot with valid cargo.

Parameters
indIndustry to trim slots.

Definition at line 3213 of file industry_cmd.cpp.

References Industry::accepted, and Industry::produced.

Referenced by AfterLoadGame().

Variable Documentation

◆ _industry_builder

IndustryBuildData _industry_builder
extern

In-game manager of industries.

Definition at line 70 of file industry_cmd.cpp.

Referenced by AfterLoadGame(), GenerateIndustries(), ITBLChunkHandler::Load(), and ITBLChunkHandler::Save().

◆ LAST_MONTH

const int LAST_MONTH = 1
static

Definition at line 61 of file industry.h.

◆ PROCESSING_INDUSTRY_ABANDONMENT_YEARS

const TimerGameEconomy::Year PROCESSING_INDUSTRY_ABANDONMENT_YEARS = 5
static

If a processing industry doesn't produce for this many consecutive economy years, it may close.

Definition at line 26 of file industry.h.

Referenced by ChangeIndustryProduction().

◆ PRODLEVEL_CLOSURE

constexpr uint8_t PRODLEVEL_CLOSURE = 0x00
staticconstexpr

signal set to actually close the industry

Definition at line 33 of file industry.h.

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

◆ PRODLEVEL_DEFAULT

constexpr uint8_t PRODLEVEL_DEFAULT = 0x10
staticconstexpr

◆ PRODLEVEL_MAXIMUM

constexpr uint8_t PRODLEVEL_MAXIMUM = 0x80
staticconstexpr

◆ PRODLEVEL_MINIMUM

constexpr uint8_t PRODLEVEL_MINIMUM = 0x04
staticconstexpr

below this level, the industry is set to be closing

Definition at line 34 of file industry.h.

Referenced by ChangeIndustryProduction(), IndustryViewWindow::DrawInfo(), IndustryViewWindow::OnClick(), and IndustryViewWindow::OnQueryTextFinished().

◆ THIS_MONTH

const int THIS_MONTH = 0
static

Definition at line 60 of file industry.h.