diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/industry_cmd.cpp | 21 | ||||
-rw-r--r-- | src/industry_type.h | 2 | ||||
-rw-r--r-- | src/lang/english.txt | 3 | ||||
-rw-r--r-- | src/openttd.cpp | 1 |
4 files changed, 27 insertions, 0 deletions
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 9deb04363..34bf1ffcb 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -40,6 +40,7 @@ #include "core/backup_type.hpp" #include "object_base.h" #include "game/game.hpp" +#include "error.h" #include "table/strings.h" #include "table/industry_land.h" @@ -2741,6 +2742,26 @@ void InitializeIndustries() _industry_builder.Reset(); } +/** Verify whether the generated industries are complete, and warn the user if not. */ +void CheckIndustries() +{ + int count = 0; + for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) { + if (Industry::GetIndustryTypeCount(it) > 0) continue; // Types of existing industries can be skipped. + + bool force_at_least_one; + uint32 chance = GetScaledIndustryGenerationProbability(it, &force_at_least_one); + if (chance == 0 || !force_at_least_one) continue; // Types that are not available can be skipped. + + const IndustrySpec *is = GetIndustrySpec(it); + SetDParam(0, is->name); + ShowErrorMessage(STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES, STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION, WL_WARNING); + + count++; + if (count >= 3) break; // Don't swamp the user with errors. + } +} + /** * Is an industry with the spec a raw industry? * @return true if it should be handled as a raw industry diff --git a/src/industry_type.h b/src/industry_type.h index 11828c530..12525fbbf 100644 --- a/src/industry_type.h +++ b/src/industry_type.h @@ -37,4 +37,6 @@ static const IndustryGfx INVALID_INDUSTRYTILE = NUM_INDUSTRYTILES; ///< one a static const int INDUSTRY_COMPLETED = 3; ///< final stage of industry construction. +void CheckIndustries(); + #endif /* INDUSTRY_TYPE_H */ diff --git a/src/lang/english.txt b/src/lang/english.txt index 6977f6b8a..6baf4558a 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -4143,6 +4143,9 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... fore STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... can only be built above the snow-line STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... can only be built below the snow-line +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}There were no suitable places for '{STRING}' industries +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Change the map generation parameters to get a better map + # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Can't build railway station here... STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Can't build bus station... diff --git a/src/openttd.cpp b/src/openttd.cpp index f289545ec..c430cf67e 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -958,6 +958,7 @@ static void MakeNewGameDone() if (_settings_client.gui.pause_on_newgame) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); CheckEngines(); + CheckIndustries(); MarkWholeScreenDirty(); } |