From 07f2afa635c0ddfa491468cc3f8677cd0d869c6d Mon Sep 17 00:00:00 2001 From: truebrain Date: Tue, 13 Jan 2009 13:09:49 +0000 Subject: (svn r15057) -Fix [NoAI]: clamp the values of a setting between the ones allowed by info.nut --- src/ai/ai_config.cpp | 7 ++++++- src/ai/ai_info.cpp | 8 ++++++++ src/ai/ai_info.hpp | 5 +++++ 3 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src/ai') diff --git a/src/ai/ai_config.cpp b/src/ai/ai_config.cpp index dc7a3e48d..cc309b62f 100644 --- a/src/ai/ai_config.cpp +++ b/src/ai/ai_config.cpp @@ -88,7 +88,12 @@ int AIConfig::GetSetting(const char *name) void AIConfig::SetSetting(const char *name, int value) { /* You can only set ai specific settings if an AI is selected. */ - assert(strcmp(name, "start_date") == 0 || this->info != NULL); + assert(this->info != NULL); + + const AIConfigItem *config_item = this->info->GetConfigItem(name); + if (config_item == NULL) return; + + value = Clamp(value, config_item->min_value, config_item->max_value); SettingValueList::iterator it = this->settings.find(name); if (it != this->settings.end()) { diff --git a/src/ai/ai_info.cpp b/src/ai/ai_info.cpp index 9e439cce2..c68972c45 100644 --- a/src/ai/ai_info.cpp +++ b/src/ai/ai_info.cpp @@ -295,6 +295,14 @@ const AIConfigItemList *AIInfo::GetConfigList() return &this->config_list; } +const AIConfigItem *AIInfo::GetConfigItem(const char *name) +{ + for (AIConfigItemList::iterator it = this->config_list.begin(); it != this->config_list.end(); it++) { + if (strcmp((*it).name, name) == 0) return &(*it); + } + return NULL; +} + int AIInfo::GetSettingDefaultValue(const char *name) { for (AIConfigItemList::iterator it = this->config_list.begin(); it != this->config_list.end(); it++) { diff --git a/src/ai/ai_info.hpp b/src/ai/ai_info.hpp index 205e89b38..9d283966d 100644 --- a/src/ai/ai_info.hpp +++ b/src/ai/ai_info.hpp @@ -126,6 +126,11 @@ public: */ const AIConfigItemList *GetConfigList(); + /** + * Get the description of a certain ai config option. + */ + const AIConfigItem *GetConfigItem(const char *name); + /** * Set a setting. */ -- cgit v1.2.3-70-g09d2