File diff r24499:98a439b5214f → r24500:deda806a71a7
src/script/script_config.cpp
Show inline comments
 
@@ -32,9 +32,9 @@ void ScriptConfig::Change(const char *na
 
	if (_game_mode == GM_NORMAL && this->info != nullptr) {
 
		/* If we're in an existing game and the Script is changed, set all settings
 
		 *  for the Script that have the random flag to a random value. */
 
		for (ScriptConfigItemList::const_iterator it = this->info->GetConfigList()->begin(); it != this->info->GetConfigList()->end(); it++) {
 
			if ((*it).flags & SCRIPTCONFIG_RANDOM) {
 
				this->SetSetting((*it).name, InteractiveRandomRange((*it).max_value + 1 - (*it).min_value) + (*it).min_value);
 
		for (const auto &item : *this->info->GetConfigList()) {
 
			if (item.flags & SCRIPTCONFIG_RANDOM) {
 
				this->SetSetting(item.name, InteractiveRandomRange(item.max_value + 1 - item.min_value) + item.min_value);
 
			}
 
		}
 
		this->AddRandomDeviation();
 
@@ -49,8 +49,8 @@ ScriptConfig::ScriptConfig(const ScriptC
 
	this->config_list = nullptr;
 
	this->is_random = config->is_random;
 

	
 
	for (SettingValueList::const_iterator it = config->settings.begin(); it != config->settings.end(); it++) {
 
		this->settings[stredup((*it).first)] = (*it).second;
 
	for (const auto &item : config->settings) {
 
		this->settings[stredup(item.first)] = item.second;
 
	}
 
	this->AddRandomDeviation();
 
}
 
@@ -79,24 +79,24 @@ const ScriptConfigItemList *ScriptConfig
 

	
 
void ScriptConfig::ClearConfigList()
 
{
 
	for (SettingValueList::iterator it = this->settings.begin(); it != this->settings.end(); it++) {
 
		free((*it).first);
 
	for (const auto &item : this->settings) {
 
		free(item.first);
 
	}
 
	this->settings.clear();
 
}
 

	
 
void ScriptConfig::AnchorUnchangeableSettings()
 
{
 
	for (ScriptConfigItemList::const_iterator it = this->GetConfigList()->begin(); it != this->GetConfigList()->end(); it++) {
 
		if (((*it).flags & SCRIPTCONFIG_INGAME) == 0) {
 
			this->SetSetting((*it).name, this->GetSetting((*it).name));
 
	for (const auto &item : *this->GetConfigList()) {
 
		if ((item.flags & SCRIPTCONFIG_INGAME) == 0) {
 
			this->SetSetting(item.name, this->GetSetting(item.name));
 
		}
 
	}
 
}
 

	
 
int ScriptConfig::GetSetting(const char *name) const
 
{
 
	SettingValueList::const_iterator it = this->settings.find(name);
 
	const auto it = this->settings.find(name);
 
	if (it == this->settings.end()) return this->info->GetSettingDefaultValue(name);
 
	return (*it).second;
 
}
 
@@ -111,7 +111,7 @@ void ScriptConfig::SetSetting(const char
 

	
 
	value = Clamp(value, config_item->min_value, config_item->max_value);
 

	
 
	SettingValueList::iterator it = this->settings.find(name);
 
	const auto it = this->settings.find(name);
 
	if (it != this->settings.end()) {
 
		(*it).second = value;
 
	} else {
 
@@ -121,17 +121,17 @@ void ScriptConfig::SetSetting(const char
 

	
 
void ScriptConfig::ResetSettings()
 
{
 
	for (SettingValueList::iterator it = this->settings.begin(); it != this->settings.end(); it++) {
 
		free((*it).first);
 
	for (const auto &item : this->settings) {
 
		free(item.first);
 
	}
 
	this->settings.clear();
 
}
 

	
 
void ScriptConfig::AddRandomDeviation()
 
{
 
	for (ScriptConfigItemList::const_iterator it = this->GetConfigList()->begin(); it != this->GetConfigList()->end(); it++) {
 
		if ((*it).random_deviation != 0) {
 
			this->SetSetting((*it).name, InteractiveRandomRange((*it).random_deviation * 2 + 1) - (*it).random_deviation + this->GetSetting((*it).name));
 
	for (const auto &item : *this->GetConfigList()) {
 
		if (item.random_deviation != 0) {
 
			this->SetSetting(item.name, InteractiveRandomRange(item.random_deviation * 2 + 1) - item.random_deviation + this->GetSetting(item.name));
 
		}
 
	}
 
}
 
@@ -186,16 +186,16 @@ void ScriptConfig::SettingsToString(char
 
{
 
	char *s = string;
 
	*s = '\0';
 
	for (SettingValueList::const_iterator it = this->settings.begin(); it != this->settings.end(); it++) {
 
	for (const auto &item : this->settings) {
 
		char no[10];
 
		seprintf(no, lastof(no), "%d", (*it).second);
 
		seprintf(no, lastof(no), "%d", item.second);
 

	
 
		/* Check if the string would fit in the destination */
 
		size_t needed_size = strlen((*it).first) + 1 + strlen(no);
 
		size_t needed_size = strlen(item.first) + 1 + strlen(no);
 
		/* If it doesn't fit, skip the next settings */
 
		if (string + needed_size > last) break;
 

	
 
		s = strecat(s, (*it).first, last);
 
		s = strecat(s, item.first, last);
 
		s = strecat(s, "=", last);
 
		s = strecat(s, no, last);
 
		s = strecat(s, ",", last);