summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2010-03-12 01:37:41 +0000
committeryexo <yexo@openttd.org>2010-03-12 01:37:41 +0000
commitf206958010d62e321b3d8f27816470f0e8c23896 (patch)
tree37e49d41f2f7f81c2fa4ab6eee33ea1063bf2f9a
parente3fb793a8a6d4bab58e68c54736a655e2373b78c (diff)
downloadopenttd-f206958010d62e321b3d8f27816470f0e8c23896.tar.xz
(svn r19389) -Fix [FS3676]: only show the "No AIs available" error message when explicitly changing the number of AI opponents
-rw-r--r--src/settings.cpp21
-rw-r--r--src/table/settings.h3
2 files changed, 15 insertions, 9 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index 9826d0c3a..46da600aa 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -905,14 +905,6 @@ static bool DifficultyChange(int32)
_settings_game.difficulty.diff_level = 3;
}
- if (((_game_mode == GM_MENU) ? _settings_newgame.difficulty : _settings_game.difficulty).max_no_competitors != 0 &&
-#ifdef ENABLE_AI
- AI::GetInfoList()->size() == 0 &&
-#endif /* ENABLE_AI */
- (!_networking || _network_server)) {
- ShowErrorMessage(STR_WARNING_NO_SUITABLE_AI, INVALID_STRING_ID, WL_CRITICAL);
- }
-
/* If we are a network-client, update the difficult setting (if it is open).
* Use this instead of just dirtying the window because we need to load in
* the new difficulty settings */
@@ -935,6 +927,19 @@ static bool DifficultyNoiseChange(int32 i)
return DifficultyChange(i);
}
+static bool MaxNoAIsChange(int32 i)
+{
+ if (((_game_mode == GM_MENU) ? _settings_newgame.difficulty : _settings_game.difficulty).max_no_competitors != 0 &&
+#ifdef ENABLE_AI
+ AI::GetInfoList()->size() == 0 &&
+#endif /* ENABLE_AI */
+ (!_networking || _network_server)) {
+ ShowErrorMessage(STR_WARNING_NO_SUITABLE_AI, INVALID_STRING_ID, WL_CRITICAL);
+ }
+
+ return DifficultyChange(i);
+}
+
/**
* Check whether the road side may be changed.
* @param p1 unused
diff --git a/src/table/settings.h b/src/table/settings.h
index 1afadeb4e..38f13915b 100644
--- a/src/table/settings.h
+++ b/src/table/settings.h
@@ -31,6 +31,7 @@ static bool TownFoundingChanged(int32 p1);
static bool DifficultyReset(int32 level);
static bool DifficultyChange(int32);
static bool DifficultyNoiseChange(int32 i);
+static bool MaxNoAIsChange(int32 i);
static bool CheckRoadSide(int p1);
static int32 ConvertLandscape(const char *value);
static bool CheckFreeformEdges(int32 p1);
@@ -336,7 +337,7 @@ const SettingDesc _settings[] = {
/***************************************************************************/
/* Saved settings variables. */
/* Do not ADD or REMOVE something in this "difficulty.XXX" table or before it. It breaks savegame compatability. */
- SDT_CONDVAR(GameSettings, difficulty.max_no_competitors, SLE_UINT8, 97, SL_MAX_VERSION, 0, 0, 0,0,MAX_COMPANIES-1,1,STR_NULL, DifficultyChange),
+ SDT_CONDVAR(GameSettings, difficulty.max_no_competitors, SLE_UINT8, 97, SL_MAX_VERSION, 0, 0, 0,0,MAX_COMPANIES-1,1,STR_NULL, MaxNoAIsChange),
SDT_CONDNULL( 1, 97, 109),
SDT_CONDVAR(GameSettings, difficulty.number_towns, SLE_UINT8, 97, SL_MAX_VERSION, 0,NG, 2, 0, 4, 1, STR_NUM_VERY_LOW, DifficultyChange),
SDT_CONDVAR(GameSettings, difficulty.number_industries, SLE_UINT8, 97, SL_MAX_VERSION, 0,NG, 4, 0, 4, 1, STR_NONE, DifficultyChange),