industry.h File Reference

Base of all industries. More...

#include "oldpool.h"
#include "core/random_func.hpp"
#include "newgrf_storage.h"
#include "cargo_type.h"
#include "economy_type.h"
#include "map_type.h"
#include "slope_type.h"
#include "date_type.h"
#include "town_type.h"
#include "industry_type.h"
#include "landscape_type.h"

Go to the source code of this file.

Data Structures

struct  Industry
 Defines the internal data of a functionnal industry. More...
struct  IndustryTileTable
struct  GRFFileProps
 Data related to the handling of grf files. More...
struct  IndustrySpec
 Defines the data structure for constructing industry. More...
struct  IndustryTileSpec
 Defines the data structure of each indivudual tile of an industry. More...

Defines

#define FOR_ALL_INDUSTRIES_FROM(i, start)   for (i = GetIndustry(start); i != NULL; i = (i->index + 1U < GetIndustryPoolSize()) ? GetIndustry(i->index + 1U) : NULL) if (i->IsValid())
#define FOR_ALL_INDUSTRIES(i)   FOR_ALL_INDUSTRIES_FROM(i, 0)

Enumerations

enum  {
  INVALID_INDUSTRY = 0xFFFF, NEW_INDUSTRYOFFSET = 37, NUM_INDUSTRYTYPES = 64, INDUSTRYTILE_NOANIM = 0xFF,
  NEW_INDUSTRYTILEOFFSET = 175, INVALID_INDUSTRYTYPE = NUM_INDUSTRYTYPES, NUM_INDUSTRYTILES = 512, INVALID_INDUSTRYTILE = NUM_INDUSTRYTILES,
  INDUSTRY_COMPLETED = 3
}
enum  { CLEAN_RANDOMSOUNDS, CLEAN_TILELSAYOUT }
enum  IndustryLifeType { INDUSTRYLIFE_BLACK_HOLE = 0, INDUSTRYLIFE_EXTRACTIVE = 1 << 0, INDUSTRYLIFE_ORGANIC = 1 << 1, INDUSTRYLIFE_PROCESSING = 1 << 2 }
enum  CheckProc {
  CHECK_NOTHING, CHECK_FOREST, CHECK_REFINERY, CHECK_FARM,
  CHECK_PLANTATION, CHECK_WATER, CHECK_LUMBERMILL, CHECK_BUBBLEGEN,
  CHECK_OIL_RIG, CHECK_END
}
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
}

Functions

 DECLARE_ENUM_AS_BIT_SET (IndustryBehaviour)
const IndustrySpecGetIndustrySpec (IndustryType thistype)
 Array of industries data.
const IndustryTileSpecGetIndustryTileSpec (IndustryGfx gfx)
 Array of industry tiles data.
void ResetIndustries ()
 This function initialize the spec arrays of both industry and industry tiles.
void PlantRandomFarmField (const Industry *i)
void ReleaseDisastersTargetingIndustry (IndustryID)
 Marks all disasters targeting this industry in such a way they won't call GetIndustry(v->dest_tile) on invalid industry anymore.
static IndustryGfx GetTranslatedIndustryTileID (IndustryGfx gfx)
void BuildIndustriesLegend ()
 Fills an array for the industries legends.
void SetIndustryDailyChanges ()
static bool IsValidIndustryID (IndustryID index)
 Check if an Industry exists whithin the pool of industries.
static IndustryID GetMaxIndustryIndex ()
static uint GetNumIndustries ()
static void IncIndustryTypeCount (IndustryType type)
 Increment the count of industries for this type.
static void DecIndustryTypeCount (IndustryType type)
 Decrement the count of industries for this type.
static uint8 GetIndustryTypeCount (IndustryType type)
 get the count of industries for this type
static void ResetIndustryCounts ()
 Resets both the total_industries and the _industry_counts This way, we centralize all counts activities.
static IndustryGetRandomIndustry ()
 Return a random valid industry.

Variables

IndustrySpec _industry_specs [NUM_INDUSTRYTYPES]
IndustryTileSpec _industry_tile_specs [NUM_INDUSTRYTILES]
int _total_industries
 General counter.
uint16 _industry_counts [NUM_INDUSTRYTYPES]
 Number of industries per type ingame.
static const uint8 IT_INVALID = 255


Detailed Description

Base of all industries.

Definition in file industry.h.


Enumeration Type Documentation

anonymous enum

Enumerator:
NEW_INDUSTRYOFFSET  original number of industries
NUM_INDUSTRYTYPES  total number of industries, new and old
INDUSTRYTILE_NOANIM  flag to mark industry tiles as having no animation
NEW_INDUSTRYTILEOFFSET  original number of tiles
INVALID_INDUSTRYTYPE  one above amount is considered invalid
NUM_INDUSTRYTILES  total number of industry tiles, new and old
INVALID_INDUSTRYTILE  one above amount is considered invalid
INDUSTRY_COMPLETED  final stage of industry construction.

Definition at line 20 of file industry.h.

anonymous enum

Enumerator:
CLEAN_RANDOMSOUNDS  Free the dynamically allocated sounds table.
CLEAN_TILELSAYOUT  Free the dynamically allocated tile layout structure.

Definition at line 32 of file industry.h.

Enumerator:
INDUSTRYBEH_PLANT_FIELDS  periodically plants fileds around itself (temp and artic 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.

Definition at line 67 of file industry.h.

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 proccess
ICT_MAP_GENERATION  during random map creation
ICT_SCENARIO_EDITOR  while scenarion edition

Definition at line 60 of file industry.h.

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

Definition at line 37 of file industry.h.


Function Documentation

static void DecIndustryTypeCount ( IndustryType  type  )  [inline, static]

Decrement the count of industries for this type.

Parameters:
type IndustryType to decrement
Precondition:
type < INVALID_INDUSTRYTYPE

Definition at line 310 of file industry.h.

References INVALID_INDUSTRYTYPE.

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 109 of file industry_cmd.cpp.

References NUM_INDUSTRYTYPES.

Referenced by BuildIndustriesLegend(), AIIndustryType::BuildIndustry(), AIIndustryType::CanBuildIndustry(), CanCargoServiceIndustry(), AIIndustryType::CanProspectIndustry(), ChangeIndustryProduction(), CheckIndustryCloseDownProtection(), CmdBuildIndustry(), CMSAForest(), CMSAMine(), CreateNewIndustryHelper(), Disaster_CoalMine_Init(), Disaster_Helicopter_Init(), DisasterTick_Airplane(), DisasterTick_Helicopter(), FindNearIndustryName(), GenerateIndustries(), AIIndustryType::GetAcceptedCargo(), AIIndustryType::GetConstructionCost(), GetCountAndDistanceOfClosestInstance(), GetIndustryIDAtOffset(), AIIndustryType::GetName(), AIIndustryType::GetProducedCargo(), GetSmallMapIndustriesPixels(), AIIndustryType::HasDock(), AIIndustry::HasDock(), AIIndustryType::HasHeliport(), AIIndustry::HasHeliport(), IndustryGetVariable(), IndustryProductionCallback(), AIIndustryType::IsBuiltOnWater(), AIIndustry::IsBuiltOnWater(), AIIndustryType::IsRawIndustry(), AIIndustryType::IsValidIndustryType(), MaybeNewIndustry(), IndustryDirectoryWindow::OnPaint(), PlaceInitialIndustry(), AIIndustryType::ProductionCanIncrease(), and TriggerIndustryProduction().

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 123 of file industry_cmd.cpp.

References INVALID_INDUSTRYTILE.

Referenced by GetIndustryIDAtOffset().

static uint8 GetIndustryTypeCount ( IndustryType  type  )  [inline, static]

get the count of industries for this type

Parameters:
type IndustryType to query
Precondition:
type < INVALID_INDUSTRYTYPE

Definition at line 320 of file industry.h.

References INVALID_INDUSTRYTYPE, and min().

Referenced by CheckIndustryCloseDownProtection(), and GetCountAndDistanceOfClosestInstance().

static void IncIndustryTypeCount ( IndustryType  type  )  [inline, static]

Increment the count of industries for this type.

Parameters:
type IndustryType to increment
Precondition:
type < INVALID_INDUSTRYTYPE

Definition at line 300 of file industry.h.

References INVALID_INDUSTRYTYPE.

static bool IsValidIndustryID ( IndustryID  index  )  [inline, static]

Check if an Industry exists whithin the pool of industries.

Parameters:
index of the desired industry
Returns:
true if it is inside the pool

Definition at line 273 of file industry.h.

Referenced by GetRandomIndustry(), and AIIndustry::IsValidIndustry().

void ReleaseDisastersTargetingIndustry ( IndustryID  i  ) 

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

Parameters:
i deleted industry

Definition at line 1017 of file disaster_cmd.cpp.

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 58 of file industry_cmd.cpp.

References _settings_game, IndustrySpec::enabled, GameSettings::game_creation, HasBit(), GameCreationSettings::landscape, NEW_INDUSTRYOFFSET, and NUM_INDUSTRYTYPES.

Referenced by ResetNewGRFData().


Generated on Mon Jun 8 23:04:12 2009 for OpenTTD by  doxygen 1.5.6