(svn r15057) -Fix [NoAI]: clamp the values of a setting between the ones allowed by info.nut

This commit is contained in:
truebrain 2009-01-13 13:09:49 +00:00
parent 1bd2867715
commit 07f2afa635
3 changed files with 19 additions and 1 deletions

View File

@ -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()) {

View File

@ -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++) {

View File

@ -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.
*/