Go to the documentation of this file.
1 /* $Id: industrytype.h 24900 2013-01-08 22:46:42Z planetmaker $ */
3 /*
4  * This file is part of OpenTTD.
5  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <>.
8  */
15 #include "map_type.h"
16 #include "slope_type.h"
17 #include "industry_type.h"
18 #include "landscape_type.h"
19 #include "cargo_type.h"
20 #include "newgrf_animation_type.h"
21 #include "newgrf_commons.h"
26 };
34 };
40 enum CheckProc {
51 };
59 };
78  /* The following flags are only used for newindustries and do no represent any normal behaviour */
83 };
90 };
94  TileIndexDiffC ti;
95  IndustryGfx gfx;
96 };
101 struct IndustrySpec {
102  const IndustryTileTable * const *table;
103  byte num_table;
107  IndustryType conflicting[3];
108  byte check_proc;
109  CargoID produced_cargo[2];
110  byte production_rate[2];
117  uint16 input_cargo_multiplier[3][2];
121  byte map_colour;
128  byte appear_ingame[NUM_LANDSCAPE];
129  byte appear_creation[NUM_LANDSCAPE];
131  const uint8 *random_sounds;
132  /* Newgrf data */
133  uint16 callback_mask;
134  uint8 cleanup_flag;
135  bool enabled;
138  bool IsRawIndustry() const;
139  bool IsProcessingIndustry() const;
140  Money GetConstructionCost() const;
141  Money GetRemovalCost() const;
142  bool UsesSmoothEconomy() const;
143 };
150  uint8 acceptance[3];
153  byte anim_next;
159  /* Newgrf data */
163  bool enabled;
165 };
167 /* industry_cmd.cpp*/
168 const IndustrySpec *GetIndustrySpec(IndustryType thistype);
169 const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx);
170 void ResetIndustries();
172 /* writable arrays of specs */
173 extern IndustrySpec _industry_specs[NUM_INDUSTRYTYPES];
174 extern IndustryTileSpec _industry_tile_specs[NUM_INDUSTRYTILES];
176 /* industry_gui.cpp */
177 void SortIndustryTypes();
178 /* Industry types sorted alphabetically by name. */
179 extern IndustryType _sorted_industry_types[NUM_INDUSTRYTYPES];
186 static inline IndustryGfx GetTranslatedIndustryTileID(IndustryGfx gfx)
187 {
188  /* the 0xFF should be GFX_WATERTILE_SPECIALCHECK but for reasons of include mess,
189  * we'll simplify the writing.
190  * Basically, the first test is required since the GFX_WATERTILE_SPECIALCHECK value
191  * will never be assigned as a tile index and is only required in order to do some
192  * tests while building the industry (as in WATER REQUIRED */
193  if (gfx != 0xFF) {
194  assert(gfx < INVALID_INDUSTRYTILE);
195  const IndustryTileSpec *it = &_industry_tile_specs[gfx];
196  return it->grf_prop.override == INVALID_INDUSTRYTILE ? gfx : it->grf_prop.override;
197  } else {
198  return gfx;
199  }
200 }
202 static const uint8 IT_INVALID = 255;
204 #endif /* INDUSTRYTYPE_H */
can be exploded by a military airplane (oil refinery)
Definition: industrytype.h:75
DECLARE_ENUM_AS_BIT_SET(GenderEthnicity) enum CompanyManagerFaceVariable
Bitgroups of the CompanyManagerFace variable.
const IndustrySpec * GetIndustrySpec(IndustryType thistype)
Array of industries data.
bool enabled
entity still available (by default true).newgrf can disable it, though
Definition: industrytype.h:135
Types related to the industry.
Definitions of a slope.
How was the industry created.
Definition: industrytype.h:54
byte map_colour
colour used for the small map
Definition: industrytype.h:121
while editing a scenario
Definition: industrytype.h:58
in previous game version or without newindustries activated
Definition: industrytype.h:55
Money GetRemovalCost() const
Get the cost for removing this industry Take note that the cost will always be zero for non-grf indus...
Types related to maps.
uint32 prospecting_chance
Chance prospecting succeeds.
Definition: industrytype.h:106
Industries at sea should be positioned near edge of the map.
Definition: industrytype.h:49
Free the dynamically allocated sounds table.
Definition: industrytype.h:24
static const IndustryGfx INVALID_INDUSTRYTILE
one above amount is considered invalid
Definition: industry_type.h:36
ai will attempt to establish air/ship routes to this industry (oil rig)
Definition: industrytype.h:74
IndustryLifeType life_type
This is also known as Industry production flag, in newgrf specs.
Definition: industrytype.h:118
periodically plants fields around itself (temp and arctic farms)
Definition: industrytype.h:64
do not increase production (oil wells) in the temperate climate
Definition: industrytype.h:71
Definitions related to NewGRF animation.
uint16 callback_mask
Bitmask of industry callbacks that have to be called.
Definition: industrytype.h:133
Always succeeds.
Definition: industrytype.h:41
uint32 removal_cost_multiplier
Base removal cost multiplier.
Definition: industrytype.h:105
during random map creation
Definition: industrytype.h:57
can cause a subsidence (coal mine, shaft that collapses)
Definition: industrytype.h:77
Like factories.
Definition: industrytype.h:33
const IndustryTileSpec * GetIndustryTileSpec(IndustryGfx gfx)
Array of industry tiles data.
const IndustryTileTable *const * table
List of the tiles composing the industry.
Definition: industrytype.h:102
is always built near towns (toy shop)
Definition: industrytype.h:69
Types related to cargoes...
StringID production_down_text
Message appearing when the industry&#39;s production is decreasing.
Definition: industrytype.h:126
StringID name
Displayed name of the industry.
Definition: industrytype.h:122
Automatic production multiplier handling.
Definition: industrytype.h:79
IndustryTileSpecialFlags special_flags
Bitmask of extra flags used by the tile.
Definition: industrytype.h:162
can only be built in towns (arctic/tropic banks, water tower)
Definition: industrytype.h:68
Do not force one instance of this type to appear on map generation.
Definition: industrytype.h:81
Industry should be below snow-line in arctic.
Definition: industrytype.h:44
Available types of industry lifetimes.
Definition: industrytype.h:29
can be exploded by a military helicopter (factory)
Definition: industrytype.h:76
static IndustryGfx GetTranslatedIndustryTileID(IndustryGfx gfx)
Do industry gfx ID translation for NewGRFs.
Definition: industrytype.h:186
uint8 cleanup_flag
flags indicating which data should be freed upon cleaning up
Definition: industrytype.h:134
Slope slopes_refused
slope pattern on which this tile cannot be built
Definition: industrytype.h:151
const uint8 * random_sounds
array of random sounds.
Definition: industrytype.h:131
can only be built after 1960 (oil rigs)
Definition: industrytype.h:73
bool IsRawIndustry() const
Is an industry with the spec a raw industry?
Like power plants and banks.
Definition: industrytype.h:30
either by user or random creation process
Definition: industrytype.h:56
bool IsProcessingIndustry() const
Is an industry with the spec a processing industry?
Data related to the handling of grf files.
void ResetIndustries()
This function initialize the spec arrays of both industry and industry tiles.
bool UsesSmoothEconomy() const
Determines whether this industrytype uses smooth economy or whether it uses standard/newgrf productio...
StringID new_industry_text
Message appearing when the industry is built.
Definition: industrytype.h:123
End marker of the industry check procedures.
Definition: industrytype.h:50
byte anim_production
Animation frame to start when goods are produced.
Definition: industrytype.h:152
Industry should be build above snow-line in arctic climate.
Definition: industrytype.h:42
static const IndustryGfx NUM_INDUSTRYTILES
total number of industry tiles, new and old
Definition: industry_type.h:35
Industry should be in the desert.
Definition: industrytype.h:46
Defines the data structure for constructing industry.
Definition: industrytype.h:101
bool enabled
entity still available (by default true).newgrf can disable it, though
Definition: industrytype.h:163
GRFFileProps grf_prop
properties related to the grf file
Definition: industrytype.h:164
Industry should be positioned near edge of the map.
Definition: industrytype.h:43
Money GetConstructionCost() const
Get the cost for constructing this industry.
IndustryBehaviour behaviour
How this industry will behave, and how others entities can use it.
Definition: industrytype.h:120
GRFFileProps grf_prop
properties related to the grf file
Definition: industrytype.h:136
byte appear_ingame[NUM_LANDSCAPE]
Probability of appearance in game.
Definition: industrytype.h:128
cuts trees and produce first output cargo from them (lumber mill)
Definition: industrytype.h:65
Definition: industrytype.h:23
uint32 StringID
Numeric value that represents a string, independent of the selected language.
Definition: strings_type.h:18
IndustryType _sorted_industry_types[NUM_INDUSTRYTYPES]
Industry types sorted by name.
Industry should NOT be in the desert.
Definition: industrytype.h:45
Industry should be in the rain forest.
Definition: industrytype.h:47
uint16 input_cargo_multiplier[3][2]
Input cargo multipliers (multiply amount of incoming cargo for the produced cargoes) ...
Definition: industrytype.h:117
uint8 callback_mask
Bitmask of industry tile callbacks that have to be called.
Definition: industrytype.h:160
uint16 override
id of the entity been replaced by
A pair-construct of a TileIndexDiff.
Definition: map_type.h:58
byte num_table
Number of elements in the table.
Definition: industrytype.h:103
Flags for miscellaneous industry tile specialities.
Definition: industrytype.h:87
is built on water (oil rig)
Definition: industrytype.h:66
byte minimal_cargo
minimum amount of cargo transported to the stations.
Definition: industrytype.h:115
uint8 cost_multiplier
Base construction cost multiplier.
Definition: industrytype.h:104
byte appear_creation[NUM_LANDSCAPE]
Probability of appearance during map creation.
Definition: industrytype.h:129
Types related to the landscape.
AnimationInfo animation
Information about the animation (is it looping, how many loops etc)
Definition: industrytype.h:161
static const IndustryType NUM_INDUSTRYTYPES
total number of industry types, new and old; limited to 240 because we need some special ids like INV...
Definition: industry_type.h:28
StringID closure_text
Message appearing when the industry closes.
Definition: industrytype.h:124
byte anim_next
Next frame in an animation.
Definition: industrytype.h:153
Available procedures to check whether an industry may build at a given location.
Definition: industrytype.h:40
Enumeration for the slope-type.
Definition: slope_type.h:50
void SortIndustryTypes()
Initialize the list of sorted industry types.
byte climate_availability
Bitmask, giving landscape enums as bit position.
Definition: industrytype.h:119
Various industry behaviours mostly to represent original TTD specialities.
Definition: industrytype.h:62
Callback 0x26 needs random bits.
Definition: industrytype.h:89
IndustryType conflicting[3]
Industries this industry cannot be close to.
Definition: industrytype.h:107
Fields are planted around when built (all farms)
Definition: industrytype.h:70
Allow closing down the last instance of this type.
Definition: industrytype.h:82
This file simplyfies and embeds a common mechanism of loading/saving and mapping of grf entities...
CargoID accepts_cargo[3]
3 accepted cargoes.
Definition: industrytype.h:116
Information about animation.
uint8 number_of_sounds
Number of sounds available in the sounds array.
Definition: industrytype.h:130
StringID station_name
Default name for nearby station.
Definition: industrytype.h:127
StringID production_up_text
Message appearing when the industry&#39;s production is increasing.
Definition: industrytype.h:125
byte check_proc
Index to a procedure to check for conflicting circumstances.
Definition: industrytype.h:108
byte CargoID
Cargo slots to indicate a cargo type within a game.
Definition: cargo_type.h:22
Free the dynamically allocated tile layout structure.
Definition: industrytype.h:25
Defines the data structure of each individual tile of an industry.
Definition: industrytype.h:148
can only be built in towns larger than 1200 inhabitants (temperate bank)
Definition: industrytype.h:67
Industry should be in low land.
Definition: industrytype.h:48
Like forests.
Definition: industrytype.h:32
Production callback needs random bits in var 10.
Definition: industrytype.h:80
can only be built before 1950 (oil wells)
Definition: industrytype.h:72
bool anim_state
When true, the tile has to be drawn using the animation state instead of the construction state...
Definition: industrytype.h:158