OpenTTD Source: src/industrytype.h File Reference

OpenTTD Source 15.0-beta1

Data Structures | Typedefs | Enumerations | Functions | Variables
industrytype.h File Reference

Industry type specs. More...

`#include "map_type.h"`
`#include "slope_type.h"`
`#include "industry_type.h"`
`#include "landscape_type.h"`
`#include "cargo_type.h"`
`#include "newgrf_animation_type.h"`
`#include "newgrf_commons.h"`

Go to the source code of this file.

## Data Structures
struct | IndustryTileLayoutTile
| Definition of one tile in an industry tile layout. More...
struct | IndustrySpec
| Defines the data structure for constructing industry. More...
struct | IndustryTileSpec
| Defines the data structure of each individual tile of an industry. More...

## Typedefs
using | IndustryTileLayout = std::vector< IndustryTileLayoutTile >
| A complete tile layout for an industry is a list of tiles.

## Enumerations
enum | IndustryLifeType { INDUSTRYLIFE_BLACK_HOLE = 0 , INDUSTRYLIFE_EXTRACTIVE = 1 << 0 , INDUSTRYLIFE_ORGANIC = 1 << 1 , INDUSTRYLIFE_PROCESSING = 1 << 2 }
| Available types of industry lifetimes. More...
enum | CheckProc { CHECK_NOTHING , CHECK_FOREST , CHECK_REFINERY , CHECK_FARM , CHECK_PLANTATION , CHECK_WATER , CHECK_LUMBERMILL , CHECK_BUBBLEGEN , CHECK_OIL_RIG , CHECK_END }
| Available procedures to check whether an industry may build at a given location. More...
enum | IndustryConstructionType { ICT_UNKNOWN , ICT_NORMAL_GAMEPLAY , ICT_MAP_GENERATION , ICT_SCENARIO_EDITOR }
| How was the industry created. More...
enum | IndustryBehaviour { INDUSTRYBEH_NONE = 0 , INDUSTRYBEH_PLANT_FIELDS = 1 << 0 , INDUSTRYBEH_CUT_TREES = 1 << 1 , INDUSTRYBEH_BUILT_ONWATER = 1 << 2 , INDUSTRYBEH_TOWN1200_MORE = 1 << 3 , INDUSTRYBEH_ONLY_INTOWN = 1 << 4 , INDUSTRYBEH_ONLY_NEARTOWN = 1 << 5 , INDUSTRYBEH_PLANT_ON_BUILT = 1 << 6 , INDUSTRYBEH_DONT_INCR_PROD = 1 << 7 , INDUSTRYBEH_BEFORE_1950 = 1 << 8 , INDUSTRYBEH_AFTER_1960 = 1 << 9 , INDUSTRYBEH_AI_AIRSHIP_ROUTES = 1 << 10 , INDUSTRYBEH_AIRPLANE_ATTACKS = 1 << 11 , INDUSTRYBEH_CHOPPER_ATTACKS = 1 << 12 , INDUSTRYBEH_CAN_SUBSIDENCE = 1 << 13 , INDUSTRYBEH_PROD_MULTI_HNDLING = 1 << 14 , INDUSTRYBEH_PRODCALLBACK_RANDOM = 1 << 15 , INDUSTRYBEH_NOBUILT_MAPCREATION = 1 << 16 , INDUSTRYBEH_CANCLOSE_LASTINSTANCE = 1 << 17 , INDUSTRYBEH_CARGOTYPES_UNLIMITED = 1 << 18 , INDUSTRYBEH_NO_PAX_PROD_CLAMP = 1 << 19 }
| Various industry behaviours mostly to represent original TTD specialities. More...
enum | IndustryTileSpecialFlags { INDTILE_SPECIAL_NONE = 0 , INDTILE_SPECIAL_NEXTFRAME_RANDOMBITS = 1 << 0 , INDTILE_SPECIAL_ACCEPTS_ALL_CARGO = 1 << 1 }
| Flags for miscellaneous industry tile specialities. More...

## Functions
const IndustrySpec * | GetIndustrySpec (IndustryType thistype)
| Array of industries data.
const IndustryTileSpec * | GetIndustryTileSpec (IndustryGfx gfx)
| Array of industry tiles data.
void | ResetIndustries ()
| This function initialize the spec arrays of both industry and industry tiles.
void | SortIndustryTypes ()
| Initialize the list of sorted industry types.
IndustryGfx | GetTranslatedIndustryTileID (IndustryGfx gfx)
| Do industry gfx ID translation for NewGRFs.

## Variables
IndustrySpec | _industry_specs [NUM_INDUSTRYTYPES]
IndustryTileSpec | _industry_tile_specs [NUM_INDUSTRYTILES]
std::array< IndustryType, NUM_INDUSTRYTYPES > | _sorted_industry_types
| Industry types sorted by name.
static const uint8_t | IT_INVALID = 255

## Detailed Description

Industry type specs.

Definition in file industrytype.h.

## Typedef Documentation

## ◆ IndustryTileLayout

using IndustryTileLayout = std::vector<IndustryTileLayoutTile>

A complete tile layout for an industry is a list of tiles.

Definition at line 96 of file industrytype.h.

## Enumeration Type Documentation

## ◆ CheckProc

enum CheckProc

Available procedures to check whether an industry may build at a given location.

See also
  CheckNewIndustryProc, _check_new_industry_procs[]

Enumerator
CHECK_NOTHING | Always succeeds.
CHECK_FOREST | Industry should be build above snow-line in arctic climate.
CHECK_REFINERY | Industry should be positioned near edge of the map.
CHECK_FARM | Industry should be below snow-line in arctic.
CHECK_PLANTATION | Industry should NOT be in the desert.
CHECK_WATER | Industry should be in the desert.
CHECK_LUMBERMILL | Industry should be in the rain forest.
CHECK_BUBBLEGEN | Industry should be in low land.
CHECK_OIL_RIG | Industries at sea should be positioned near edge of the map.
CHECK_END | End marker of the industry check procedures.

Definition at line 33 of file industrytype.h.

## ◆ IndustryBehaviour

enum IndustryBehaviour

Various industry behaviours mostly to represent original TTD specialities.

Enumerator
INDUSTRYBEH_PLANT_FIELDS | periodically plants fields around itself (temp and arctic farms)
INDUSTRYBEH_CUT_TREES | cuts trees and produce first output cargo from them (lumber mill)
INDUSTRYBEH_BUILT_ONWATER | is built on water (oil rig)
INDUSTRYBEH_TOWN1200_MORE | can only be built in towns larger than 1200 inhabitants (temperate bank)
INDUSTRYBEH_ONLY_INTOWN | can only be built in towns (arctic/tropic banks, water tower)
INDUSTRYBEH_ONLY_NEARTOWN | is always built near towns (toy shop)
INDUSTRYBEH_PLANT_ON_BUILT | Fields are planted around when built (all farms)
INDUSTRYBEH_DONT_INCR_PROD | do not increase production (oil wells) in the temperate climate
INDUSTRYBEH_BEFORE_1950 | can only be built before 1950 (oil wells)
INDUSTRYBEH_AFTER_1960 | can only be built after 1960 (oil rigs)
INDUSTRYBEH_AI_AIRSHIP_ROUTES | ai will attempt to establish air/ship routes to this industry (oil rig)
INDUSTRYBEH_AIRPLANE_ATTACKS | can be exploded by a military airplane (oil refinery)
INDUSTRYBEH_CHOPPER_ATTACKS | can be exploded by a military helicopter (factory)
INDUSTRYBEH_CAN_SUBSIDENCE | can cause a subsidence (coal mine, shaft that collapses)
INDUSTRYBEH_PROD_MULTI_HNDLING | Automatic production multiplier handling.
INDUSTRYBEH_PRODCALLBACK_RANDOM | Production callback needs random bits in var 10.
INDUSTRYBEH_NOBUILT_MAPCREATION | Do not force one instance of this type to appear on map generation.
INDUSTRYBEH_CANCLOSE_LASTINSTANCE | Allow closing down the last instance of this type.
INDUSTRYBEH_CARGOTYPES_UNLIMITED | Allow produced/accepted cargoes callbacks to supply more than 2 and 3 types.
INDUSTRYBEH_NO_PAX_PROD_CLAMP | Do not clamp production of passengers. (smooth economy only)

Definition at line 55 of file industrytype.h.

## ◆ IndustryConstructionType

enum IndustryConstructionType

How was the industry created.

Enumerator
ICT_UNKNOWN | in previous game version or without newindustries activated
ICT_NORMAL_GAMEPLAY | either by user or random creation process
ICT_MAP_GENERATION | during random map creation
ICT_SCENARIO_EDITOR | while editing a scenario

Definition at line 47 of file industrytype.h.

## ◆ IndustryLifeType

enum IndustryLifeType

Available types of industry lifetimes.

Enumerator
INDUSTRYLIFE_BLACK_HOLE | Like power plants and banks.
INDUSTRYLIFE_EXTRACTIVE | Like mines.
INDUSTRYLIFE_ORGANIC | Like forests.
INDUSTRYLIFE_PROCESSING | Like factories.

Definition at line 22 of file industrytype.h.

## ◆ IndustryTileSpecialFlags

enum IndustryTileSpecialFlags

Flags for miscellaneous industry tile specialities.

Enumerator
INDTILE_SPECIAL_NEXTFRAME_RANDOMBITS | Callback 0x26 needs random bits.
INDTILE_SPECIAL_ACCEPTS_ALL_CARGO | Tile always accepts all cargoes the associated industry accepts.

Definition at line 82 of file industrytype.h.

## Function Documentation

## ◆ GetIndustrySpec()

const IndustrySpec * GetIndustrySpec | ( | IndustryType | thistype | ) |

Array of industries data.

Array of industries data.

This will ensure at once : proper access and not allowing modifications of it.

Parameters

  thistype | of industry (which is the index in _industry_specs)

Precondition
  thistype < NUM_INDUSTRYTYPES

Returns
  a pointer to the corresponding industry spec

Definition at line 123 of file industry_cmd.cpp.

References NUM_INDUSTRYTYPES.

Referenced by IndustryOverrideManager::AddEntityID(), AdvertiseIndustryOpening(), AfterLoadGame(), BuildIndustriesLegend(), CcBuildIndustry(), ChangeIndustryProduction(), CheckIfCallBackAllowsCreation(), CheckIfFarEnoughFromConflictingIndustry(), CheckIfIndustryIsAllowed(), CheckIfIndustryTilesAreFree(), CheckIndustries(), CheckIndustryCloseDownProtection(), CmdBuildIndustry(), CmdIndustrySetProduction(), CMSAMine(), IndustryCargoesWindow::ComputeCargoDisplay(), IndustryCargoesWindow::ComputeIndustryDisplay(), CargoesRow::ConnectIndustryAccepted(), CargoesRow::ConnectIndustryProduced(), IndustryCargoesWindow::CountMatchingAcceptingIndustries(), IndustryCargoesWindow::CountMatchingProducingIndustries(), CreateNewIndustry(), CreateNewIndustryHelper(), Disaster_CoalMine_Init(), Disaster_Helicopter_Init(), DisasterTick_Aircraft(), DoCreateNewIndustry(), CargoesField::Draw(), IndustryViewWindow::DrawInfo(), BuildIndustryWindow::DrawWidget(), FindNearIndustryName(), FormatString(), GenerateStationName(), GetAiPurchaseCallbackResult(), GetCountAndDistanceOfClosestInstance(), IndustriesResolverObject::GetDebugID(), GetGrffile(), NIHIndustry::GetGRFID(), GetIndustryGamePlayProbability(), GetIndustryProbabilityCallback(), IndustryDirectoryWindow::GetIndustryString(), GetScaledIndustryGenerationProbability(), NIHIndustry::GetSpec(), SmallMapWindow::GetTileColours(), IndustriesScopeResolver::GetVariable(), IndustriesResolverObject::IndustriesResolverObject(), IndustryProductionCallback(), IndustryTemporarilyRefusesCargo(), IndustryTypeNameSorter(), NIHIndustry::IsInspectable(), IsTileForestIndustry(), BuildIndustryWindow::OnClick(), IndustryCargoesWindow::OnClick(), IndustryCargoesWindow::OnInit(), IndustryViewWindow::OnInvalidateData(), BuildIndustryWindow::OnPlaceObject(), Industry::RecomputeProductionMultipliers(), BuildIndustryWindow::SetStringParameters(), IndustryCargoesWindow::SetStringParameters(), ShowIndustryCargoesWindow(), IndustriesScopeResolver::StorePSA(), TransportIndustryGoods(), TriggerIndustryProduction(), and BuildIndustryWindow::UpdateWidgetSize().

## ◆ GetIndustryTileSpec()

const IndustryTileSpec * GetIndustryTileSpec | ( | IndustryGfx | gfx | ) |

Array of industry tiles data.

Array of industry tiles data.

This will ensure at once : proper access and not allowing modifications of it.

Parameters

  gfx | of industrytile (which is the index in _industry_tile_specs)

Precondition
  gfx < INVALID_INDUSTRYTILE

Returns
  a pointer to the corresponding industrytile spec

Definition at line 137 of file industry_cmd.cpp.

References INVALID_INDUSTRYTILE.

Referenced by CheckIfIndustryTilesAreFree(), CheckIfIndustryTileSlopes(), DoCreateNewIndustry(), DoTriggerIndustryTile(), IndustryTileResolverObject::GetDebugID(), NIHIndustryTile::GetGRFID(), GetIndTileGrffile(), GetIndustryIDAtOffset(), NIHIndustryTile::GetSpec(), IndustryTileResolverObject::IndustryTileResolverObject(), and NIHIndustryTile::IsInspectable().

## ◆ GetTranslatedIndustryTileID()

IndustryGfx GetTranslatedIndustryTileID | ( | IndustryGfx | gfx | ) |
| inline

Do industry gfx ID translation for NewGRFs.

Parameters

  gfx | the type to get the override for.

Returns
  the gfx to actually work with.

Definition at line 189 of file industrytype.h.

References IndustryTileSpec::grf_prop, INVALID_INDUSTRYTILE, and GRFFileProps::override.

Referenced by CheckIfIndustryTilesAreFree(), CheckIfIndustryTileSlopes(), DoCreateNewIndustry(), and GetIndustryGfx().

## ◆ ResetIndustries()

void ResetIndustries | ( |  | ) |

This function initialize the spec arrays of both industry and industry tiles.

It adjusts the enabling of the industry too, based on climate availability. This will allow for clearer testings

Definition at line 80 of file industry_cmd.cpp.

References _settings_game, GameSettings::game_creation, HasBit(), GameCreationSettings::landscape, and OverrideManagerBase::ResetOverride().

Referenced by ResetNewGRFData().

## ◆ SortIndustryTypes()

void SortIndustryTypes | ( |  | ) |

Initialize the list of sorted industry types.

Definition at line 238 of file industry_gui.cpp.

References _sorted_industry_types, IndustryTypeNameSorter(), and NUM_INDUSTRYTYPES.

Referenced by AfterLoadGRFs(), and ReadLanguagePack().

## Variable Documentation

## ◆ _industry_specs

IndustrySpec _industry_specs[NUM_INDUSTRYTYPES]
| extern

Definition at line 68 of file industry_cmd.cpp.

## ◆ _industry_tile_specs

IndustryTileSpec _industry_tile_specs[NUM_INDUSTRYTILES]
| extern

Definition at line 69 of file industry_cmd.cpp.

## ◆ _sorted_industry_types

std::array<IndustryType, NUM_INDUSTRYTYPES> _sorted_industry_types
| extern

Industry types sorted by name.

Definition at line 224 of file industry_gui.cpp.

Referenced by BuildIndustriesLegend(), IndustryCargoesWindow::ComputeCargoDisplay(), IndustryCargoesWindow::ComputeIndustryDisplay(), IndustryDirectoryWindow::IndustryTypeSorter(), IndustryCargoesWindow::OnClick(), ShowIndustryCargoesWindow(), and SortIndustryTypes().

## ◆ IT_INVALID

const uint8_t IT_INVALID = 255
| static

Definition at line 205 of file industrytype.h.