From 1916454776b45471471f10ba4f9bec23662482a3 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 6 Feb 2025 20:08:51 +0000 Subject: [PATCH] Codechange: Use EnumBitSet for IndustryLifeTypes. --- src/industry_cmd.cpp | 10 +++--- src/industrytype.h | 14 +++++---- src/newgrf.cpp | 2 +- src/station_cmd.cpp | 2 +- src/table/build_industry.h | 64 +++++++++++++++++++------------------- 5 files changed, 47 insertions(+), 45 deletions(-) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index bfe7e34d2d..f1f8e9b4e1 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -982,7 +982,7 @@ bool IsTileForestIndustry(TileIndex tile) const Industry *ind = Industry::GetByTile(tile); /* Check for organic industry (i.e. not processing or extractive) */ - if ((GetIndustrySpec(ind->type)->life_type & INDUSTRYLIFE_ORGANIC) == 0) return false; + if (!GetIndustrySpec(ind->type)->life_type.Test(IndustryLifeType::Organic)) return false; /* Check for wood production */ return std::any_of(std::begin(ind->produced), std::end(ind->produced), [](const auto &p) { return IsValidCargoType(p.cargo) && CargoSpec::Get(p.cargo)->label == CT_WOOD; }); @@ -2841,7 +2841,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) if (indspec->life_type == INDUSTRYLIFE_BLACK_HOLE) return; } - if (standard || (!callback_enabled && (indspec->life_type & (INDUSTRYLIFE_ORGANIC | INDUSTRYLIFE_EXTRACTIVE)) != 0)) { + if (standard || (!callback_enabled && indspec->life_type.Any({IndustryLifeType::Organic, IndustryLifeType::Extractive}))) { /* decrease or increase */ bool only_decrease = indspec->behaviour.Test(IndustryBehaviour::DontIncrProd) && _settings_game.game_creation.landscape == LandscapeType::Temperate; @@ -2919,7 +2919,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) increment = 0; } - if (!callback_enabled && (indspec->life_type & INDUSTRYLIFE_PROCESSING)) { + if (!callback_enabled && indspec->life_type.Test(IndustryLifeType::Processing)) { if (TimerGameEconomy::year - i->last_prod_year >= PROCESSING_INDUSTRY_ABANDONMENT_YEARS && Chance16(1, original_economy ? 2 : 180)) { closeit = true; } @@ -3107,7 +3107,7 @@ void CheckIndustries() */ bool IndustrySpec::IsRawIndustry() const { - return (this->life_type & (INDUSTRYLIFE_EXTRACTIVE | INDUSTRYLIFE_ORGANIC)) != 0; + return this->life_type.Any({IndustryLifeType::Extractive, IndustryLifeType::Organic}); } /** @@ -3117,7 +3117,7 @@ bool IndustrySpec::IsRawIndustry() const bool IndustrySpec::IsProcessingIndustry() const { /* Lumber mills are neither raw nor processing */ - return (this->life_type & INDUSTRYLIFE_PROCESSING) != 0 && + return this->life_type.Test(IndustryLifeType::Processing) && !this->behaviour.Test(IndustryBehaviour::CutTrees); } diff --git a/src/industrytype.h b/src/industrytype.h index 568a7c04ed..4f37b0cdb4 100644 --- a/src/industrytype.h +++ b/src/industrytype.h @@ -20,12 +20,14 @@ #include "newgrf_commons.h" /** Available types of industry lifetimes. */ -enum IndustryLifeType : uint8_t { - INDUSTRYLIFE_BLACK_HOLE = 0, ///< Like power plants and banks - INDUSTRYLIFE_EXTRACTIVE = 1 << 0, ///< Like mines - INDUSTRYLIFE_ORGANIC = 1 << 1, ///< Like forests - INDUSTRYLIFE_PROCESSING = 1 << 2, ///< Like factories +enum class IndustryLifeType : uint8_t { + Extractive = 0, ///< Like mines + Organic = 1, ///< Like forests + Processing = 2, ///< Like factories }; +using IndustryLifeTypes = EnumBitSet; + +static constexpr IndustryLifeTypes INDUSTRYLIFE_BLACK_HOLE{}; ///< Like power plants and banks /** * Available procedures to check whether an industry may build at a given location. @@ -114,7 +116,7 @@ struct IndustrySpec { uint8_t minimal_cargo; std::array accepts_cargo; ///< 16 accepted cargoes. uint16_t 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 + IndustryLifeTypes life_type; ///< This is also known as Industry production flag, in newgrf specs LandscapeTypes climate_availability; ///< Bitmask, giving landscape enums as bit position IndustryBehaviours behaviour; ///< How this industry will behave, and how others entities can use it uint8_t map_colour; ///< colour used for the small map diff --git a/src/newgrf.cpp b/src/newgrf.cpp index c18ebd93be..8dc422fc52 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -3759,7 +3759,7 @@ static ChangeInfoResult IndustriesChangeInfo(uint first, uint last, int prop, By } case 0x0B: // Industry production flags - indsp->life_type = (IndustryLifeType)buf.ReadByte(); + indsp->life_type = IndustryLifeTypes{buf.ReadByte()}; break; case 0x0C: // Industry closure message diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 0172a2490b..6a1c4c1c19 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -176,7 +176,7 @@ static bool CMSAMine(TileIndex tile) const Industry *ind = Industry::GetByTile(tile); /* No extractive industry */ - if ((GetIndustrySpec(ind->type)->life_type & INDUSTRYLIFE_EXTRACTIVE) == 0) return false; + if (!GetIndustrySpec(ind->type)->life_type.Test(IndustryLifeType::Extractive)) return false; for (const auto &p : ind->produced) { /* The industry extracts something non-liquid, i.e. no oil or plastic, so it is a mine. diff --git a/src/table/build_industry.h b/src/table/build_industry.h index 510a248dea..16ce9881bc 100644 --- a/src/table/build_industry.h +++ b/src/table/build_industry.h @@ -1151,7 +1151,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_COAL, 15, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic}), + IndustryLifeType::Extractive, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic}), IndustryBehaviour::CanSubsidence, STR_INDUSTRY_NAME_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1171,7 +1171,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_GOODS, 0, CT_INVALID, 0, 5, CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Temperate, + IndustryLifeType::Processing, LandscapeType::Temperate, {}, STR_INDUSTRY_NAME_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1181,7 +1181,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST, CT_WOOD, 13, CT_INVALID, 0, 30, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_ORGANIC, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic}), + IndustryLifeType::Organic, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic}), {}, STR_INDUSTRY_NAME_FOREST, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), @@ -1191,7 +1191,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY, CT_GOODS, 0, CT_INVALID, 0, 5, CT_OIL, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_PROCESSING, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic, LandscapeType::Tropic}), + IndustryLifeType::Processing, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic, LandscapeType::Tropic}), IndustryBehaviour::AirplaneAttacks, STR_INDUSTRY_NAME_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1201,7 +1201,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG, CT_OIL, 15, CT_PASSENGERS, 2, 5, CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Temperate, + IndustryLifeType::Extractive, LandscapeType::Temperate, IndustryBehaviours({IndustryBehaviour::BuiltOnWater, IndustryBehaviour::After1960, IndustryBehaviour::AIAirShipRoutes}), STR_INDUSTRY_NAME_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1211,7 +1211,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING, CT_GOODS, 0, CT_INVALID, 0, 5, MCT_LIVESTOCK_FRUIT, 256, MCT_GRAIN_WHEAT_MAIZE, 256, CT_STEEL, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Temperate, + IndustryLifeType::Processing, LandscapeType::Temperate, IndustryBehaviour::ChopperAttacks, STR_INDUSTRY_NAME_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1221,7 +1221,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_GOODS, 0, CT_INVALID, 0, 5, CT_PAPER, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Arctic, + IndustryLifeType::Processing, LandscapeType::Arctic, {}, STR_INDUSTRY_NAME_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1231,7 +1231,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING, CT_STEEL, 0, CT_INVALID, 0, 5, CT_IRON_ORE, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Temperate, + IndustryLifeType::Processing, LandscapeType::Temperate, {}, STR_INDUSTRY_NAME_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1241,7 +1241,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM, MCT_GRAIN_WHEAT_MAIZE, 10, MCT_LIVESTOCK_FRUIT, 10, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_ORGANIC, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic}), + IndustryLifeType::Organic, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic}), IndustryBehaviours({IndustryBehaviour::PlantFields, IndustryBehaviour::PlantOnBuild}), STR_INDUSTRY_NAME_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), @@ -1251,7 +1251,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_COPPER_ORE, 10, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Tropic, + IndustryLifeType::Extractive, LandscapeType::Tropic, {}, STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1261,7 +1261,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_OIL, 12, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic, LandscapeType::Tropic}), + IndustryLifeType::Extractive, LandscapeTypes({LandscapeType::Temperate, LandscapeType::Arctic, LandscapeType::Tropic}), IndustryBehaviours({IndustryBehaviour::DontIncrProd, IndustryBehaviour::Before1950}), STR_INDUSTRY_NAME_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1281,7 +1281,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING, CT_FOOD, 0, CT_INVALID, 0, 5, MCT_LIVESTOCK_FRUIT, 256, MCT_GRAIN_WHEAT_MAIZE, 256, CT_INVALID, 256, - INDUSTRYLIFE_PROCESSING, LandscapeTypes({LandscapeType::Arctic, LandscapeType::Tropic}), + IndustryLifeType::Processing, LandscapeTypes({LandscapeType::Arctic, LandscapeType::Tropic}), {}, STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1291,7 +1291,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING, CT_PAPER, 0, CT_INVALID, 0, 5, CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Arctic, + IndustryLifeType::Processing, LandscapeType::Arctic, {}, STR_INDUSTRY_NAME_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1301,7 +1301,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING, MCT_VALUABLES_GOLD_DIAMONDS, 7, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Arctic, + IndustryLifeType::Extractive, LandscapeType::Arctic, {}, STR_INDUSTRY_NAME_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1321,7 +1321,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING, MCT_VALUABLES_GOLD_DIAMONDS, 7, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Tropic, + IndustryLifeType::Extractive, LandscapeType::Tropic, {}, STR_INDUSTRY_NAME_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1331,7 +1331,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_IRON_ORE, 10, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Temperate, + IndustryLifeType::Extractive, LandscapeType::Temperate, {}, STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1341,7 +1341,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION, MCT_LIVESTOCK_FRUIT, 10, CT_INVALID, 0, 15, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_ORGANIC, LandscapeType::Tropic, + IndustryLifeType::Organic, LandscapeType::Tropic, {}, STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), @@ -1351,7 +1351,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION, CT_RUBBER, 10, CT_INVALID, 0, 15, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_ORGANIC, LandscapeType::Tropic, + IndustryLifeType::Organic, LandscapeType::Tropic, {}, STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), @@ -1361,7 +1361,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER, CT_WATER, 12, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Tropic, + IndustryLifeType::Extractive, LandscapeType::Tropic, {}, STR_INDUSTRY_NAME_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1381,7 +1381,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION, CT_GOODS, 0, CT_INVALID, 0, 5, CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Tropic, + IndustryLifeType::Processing, LandscapeType::Tropic, {}, STR_INDUSTRY_NAME_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1391,7 +1391,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION, MCT_GRAIN_WHEAT_MAIZE, 11, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_ORGANIC, LandscapeType::Tropic, + IndustryLifeType::Organic, LandscapeType::Tropic, IndustryBehaviours({IndustryBehaviour::PlantFields, IndustryBehaviour::PlantOnBuild}), STR_INDUSTRY_NAME_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), @@ -1401,7 +1401,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL, CT_WOOD, 0, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Tropic, + IndustryLifeType::Processing, LandscapeType::Tropic, IndustryBehaviour::CutTrees, STR_INDUSTRY_NAME_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1411,7 +1411,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_COTTON_CANDY, 13, CT_INVALID, 0, 30, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_ORGANIC, LandscapeType::Toyland, + IndustryLifeType::Organic, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1421,7 +1421,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING, CT_CANDY, 0, CT_INVALID, 0, 5, CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Toyland, + IndustryLifeType::Processing, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1431,7 +1431,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_BATTERIES, 11, CT_INVALID, 0, 30, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_ORGANIC, LandscapeType::Toyland, + IndustryLifeType::Organic, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), @@ -1441,7 +1441,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_COLA, 12, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Toyland, + IndustryLifeType::Extractive, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1461,7 +1461,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING, CT_TOYS, 0, CT_INVALID, 0, 5, CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Toyland, + IndustryLifeType::Processing, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1471,7 +1471,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_PLASTIC, 14, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Toyland, + IndustryLifeType::Extractive, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1481,7 +1481,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING, CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5, CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 256, - INDUSTRYLIFE_PROCESSING, LandscapeType::Toyland, + IndustryLifeType::Processing, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1491,7 +1491,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN, CT_BUBBLES, 13, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Toyland, + IndustryLifeType::Extractive, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1501,7 +1501,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_TOFFEE, 10, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Toyland, + IndustryLifeType::Extractive, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), @@ -1511,7 +1511,7 @@ static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = { IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING, CT_SUGAR, 11, CT_INVALID, 0, 5, CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, - INDUSTRYLIFE_EXTRACTIVE, LandscapeType::Toyland, + IndustryLifeType::Extractive, LandscapeType::Toyland, {}, STR_INDUSTRY_NAME_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),