summaryrefslogtreecommitdiff
path: root/src/industrytype.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/industrytype.h')
-rw-r--r--src/industrytype.h62
1 files changed, 33 insertions, 29 deletions
diff --git a/src/industrytype.h b/src/industrytype.h
index 03b6c7973..da09a6d9b 100644
--- a/src/industrytype.h
+++ b/src/industrytype.h
@@ -95,45 +95,48 @@ struct IndustryTileTable {
IndustryGfx gfx;
};
+const int INDUSTRY_NUM_INPUTS = 16; ///< Number of cargo types an industry can accept
+const int INDUSTRY_NUM_OUTPUTS = 16; ///< Number of cargo types an industry can produce
+
/**
* Defines the data structure for constructing industry.
*/
struct IndustrySpec {
- const IndustryTileTable * const *table;///< List of the tiles composing the industry
- byte num_table; ///< Number of elements in the table
- uint8 cost_multiplier; ///< Base construction cost multiplier.
- uint32 removal_cost_multiplier; ///< Base removal cost multiplier.
- uint32 prospecting_chance; ///< Chance prospecting succeeds
- IndustryType conflicting[3]; ///< Industries this industry cannot be close to
- byte check_proc; ///< Index to a procedure to check for conflicting circumstances
- CargoID produced_cargo[2];
- byte production_rate[2];
+ const IndustryTileTable * const *table; ///< List of the tiles composing the industry
+ byte num_table; ///< Number of elements in the table
+ uint8 cost_multiplier; ///< Base construction cost multiplier.
+ uint32 removal_cost_multiplier; ///< Base removal cost multiplier.
+ uint32 prospecting_chance; ///< Chance prospecting succeeds
+ IndustryType conflicting[3]; ///< Industries this industry cannot be close to
+ byte check_proc; ///< Index to a procedure to check for conflicting circumstances
+ CargoID produced_cargo[INDUSTRY_NUM_OUTPUTS];
+ byte production_rate[INDUSTRY_NUM_OUTPUTS];
/**
* minimum amount of cargo transported to the stations.
* If the waiting cargo is less than this number, no cargo is moved to it.
*/
byte minimal_cargo;
- CargoID accepts_cargo[3]; ///< 3 accepted cargoes.
- uint16 input_cargo_multiplier[3][2]; ///< Input cargo multipliers (multiply amount of incoming cargo for the produced cargoes)
- IndustryLifeType life_type; ///< This is also known as Industry production flag, in newgrf specs
- byte climate_availability; ///< Bitmask, giving landscape enums as bit position
- IndustryBehaviour behaviour; ///< How this industry will behave, and how others entities can use it
- byte map_colour; ///< colour used for the small map
- StringID name; ///< Displayed name of the industry
- StringID new_industry_text; ///< Message appearing when the industry is built
- StringID closure_text; ///< Message appearing when the industry closes
- StringID production_up_text; ///< Message appearing when the industry's production is increasing
- StringID production_down_text; ///< Message appearing when the industry's production is decreasing
- StringID station_name; ///< Default name for nearby station
- byte appear_ingame[NUM_LANDSCAPE]; ///< Probability of appearance in game
- byte appear_creation[NUM_LANDSCAPE]; ///< Probability of appearance during map creation
- uint8 number_of_sounds; ///< Number of sounds available in the sounds array
- const uint8 *random_sounds; ///< array of random sounds.
+ CargoID accepts_cargo[INDUSTRY_NUM_INPUTS]; ///< 16 accepted cargoes.
+ uint16 input_cargo_multiplier[INDUSTRY_NUM_INPUTS][INDUSTRY_NUM_OUTPUTS]; ///< Input cargo multipliers (multiply amount of incoming cargo for the produced cargoes)
+ IndustryLifeType life_type; ///< This is also known as Industry production flag, in newgrf specs
+ byte climate_availability; ///< Bitmask, giving landscape enums as bit position
+ IndustryBehaviour behaviour; ///< How this industry will behave, and how others entities can use it
+ byte map_colour; ///< colour used for the small map
+ StringID name; ///< Displayed name of the industry
+ StringID new_industry_text; ///< Message appearing when the industry is built
+ StringID closure_text; ///< Message appearing when the industry closes
+ StringID production_up_text; ///< Message appearing when the industry's production is increasing
+ StringID production_down_text; ///< Message appearing when the industry's production is decreasing
+ StringID station_name; ///< Default name for nearby station
+ byte appear_ingame[NUM_LANDSCAPE]; ///< Probability of appearance in game
+ byte appear_creation[NUM_LANDSCAPE]; ///< Probability of appearance during map creation
+ uint8 number_of_sounds; ///< Number of sounds available in the sounds array
+ const uint8 *random_sounds; ///< array of random sounds.
/* Newgrf data */
- uint16 callback_mask; ///< Bitmask of industry callbacks that have to be called
- uint8 cleanup_flag; ///< flags indicating which data should be freed upon cleaning up
- bool enabled; ///< entity still available (by default true).newgrf can disable it, though
- GRFFileProps grf_prop; ///< properties related to the grf file
+ uint16 callback_mask; ///< Bitmask of industry callbacks that have to be called
+ uint8 cleanup_flag; ///< flags indicating which data should be freed upon cleaning up
+ bool enabled; ///< entity still available (by default true).newgrf can disable it, though
+ GRFFileProps grf_prop; ///< properties related to the grf file
bool IsRawIndustry() const;
bool IsProcessingIndustry() const;
@@ -144,6 +147,7 @@ struct IndustrySpec {
/**
* Defines the data structure of each individual tile of an industry.
+ * @note A tile can at most accept 3 types of cargo, even if an industry as a whole can accept more types.
*/
struct IndustryTileSpec {
CargoID accepts_cargo[3]; ///< Cargo accepted by this tile