Fix #6452: Reset only editable and visible settings from GUI (#7890)

Also enables the Reset button while in-game for AI configs.
This commit is contained in:
SamuXarick
2020-12-27 14:05:47 +00:00
committed by GitHub
parent b408fe77f7
commit dc5b8020cc
3 changed files with 27 additions and 6 deletions

View File

@@ -127,6 +127,26 @@ void ScriptConfig::ResetSettings()
this->settings.clear();
}
void ScriptConfig::ResetEditableSettings(bool yet_to_start)
{
if (this->info == nullptr) return ResetSettings();
for (SettingValueList::iterator it = this->settings.begin(); it != this->settings.end();) {
const ScriptConfigItem *config_item = this->info->GetConfigItem(it->first);
assert(config_item != nullptr);
bool editable = yet_to_start || (config_item->flags & SCRIPTCONFIG_INGAME) != 0;
bool visible = _settings_client.gui.ai_developer_tools || (config_item->flags & SCRIPTCONFIG_DEVELOPER) == 0;
if (editable && visible) {
free(it->first);
it = this->settings.erase(it);
} else {
it++;
}
}
}
void ScriptConfig::AddRandomDeviation()
{
for (const auto &item : *this->GetConfigList()) {