Changeset - r24500:deda806a71a7
[Not reviewed]
master
0 7 0
Patric Stout - 3 years ago 2020-12-25 18:38:18
truebrain@openttd.org
Codechange: use C++11 constructs for for-each loops (#8432)
7 files changed with 81 insertions and 85 deletions:
0 comments (0 inline, 0 general)
src/ai/ai_gui.cpp
Show inline comments
 
@@ -84,14 +84,14 @@ struct AIListWindow : public Window {
 

	
 
		/* Try if we can find the currently selected AI */
 
		this->selected = -1;
 
		if (GetConfig(slot)->HasScript()) {
 
			ScriptInfo *info = GetConfig(slot)->GetInfo();
 
			int i = 0;
 
			for (ScriptInfoList::const_iterator it = this->info_list->begin(); it != this->info_list->end(); it++, i++) {
 
				if ((*it).second == info) {
 
			for (const auto &item : *this->info_list) {
 
				if (item.second == info) {
 
					this->selected = i;
 
					break;
 
				}
 
			}
 
		}
 
	}
 
@@ -124,26 +124,28 @@ struct AIListWindow : public Window {
 
				int y = this->GetWidget<NWidgetBase>(WID_AIL_LIST)->pos_y;
 
				/* First AI in the list is hardcoded to random */
 
				if (this->vscroll->IsVisible(0)) {
 
					DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_LEFT, y + WD_MATRIX_TOP, this->slot == OWNER_DEITY ? STR_AI_CONFIG_NONE : STR_AI_CONFIG_RANDOM_AI, this->selected == -1 ? TC_WHITE : TC_ORANGE);
 
					y += this->line_height;
 
				}
 
				ScriptInfoList::const_iterator it = this->info_list->begin();
 
				for (int i = 1; it != this->info_list->end(); i++, it++) {
 
				int i = 1;
 
				for (const auto &item : *this->info_list) {
 
					i++;
 
					if (this->vscroll->IsVisible(i)) {
 
						DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, (*it).second->GetName(), (this->selected == i - 1) ? TC_WHITE : TC_ORANGE);
 
						DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, item.second->GetName(), (this->selected == i - 1) ? TC_WHITE : TC_ORANGE);
 
						y += this->line_height;
 
					}
 
				}
 
				break;
 
			}
 
			case WID_AIL_INFO_BG: {
 
				AIInfo *selected_info = nullptr;
 
				ScriptInfoList::const_iterator it = this->info_list->begin();
 
				for (int i = 1; selected_info == nullptr && it != this->info_list->end(); i++, it++) {
 
					if (this->selected == i - 1) selected_info = static_cast<AIInfo *>((*it).second);
 
				int i = 1;
 
				for (const auto &item : *this->info_list) {
 
					i++;
 
					if (this->selected == i - 1) selected_info = static_cast<AIInfo *>(item.second);
 
				}
 
				/* Some info about the currently selected AI. */
 
				if (selected_info != nullptr) {
 
					int y = r.top + WD_FRAMERECT_TOP;
 
					SetDParamStr(0, selected_info->GetAuthor());
 
					DrawString(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, y, STR_AI_LIST_AUTHOR);
 
@@ -331,17 +333,16 @@ struct AISettingsWindow : public Window 
 
	 * gui.ai_developer_tools is enabled.
 
	 */
 
	void RebuildVisibleSettings()
 
	{
 
		visible_settings.clear();
 

	
 
		ScriptConfigItemList::const_iterator it = this->ai_config->GetConfigList()->begin();
 
		for (; it != this->ai_config->GetConfigList()->end(); it++) {
 
			bool no_hide = (it->flags & SCRIPTCONFIG_DEVELOPER) == 0;
 
		for (const auto &item : *this->ai_config->GetConfigList()) {
 
			bool no_hide = (item.flags & SCRIPTCONFIG_DEVELOPER) == 0;
 
			if (no_hide || _settings_client.gui.ai_developer_tools) {
 
				visible_settings.push_back(&(*it));
 
				visible_settings.push_back(&item);
 
			}
 
		}
 

	
 
		this->vscroll->SetCount((int)this->visible_settings.size());
 
	}
 

	
src/ai/ai_scanner.cpp
Show inline comments
 
@@ -58,14 +58,14 @@ void AIScannerInfo::RegisterAPI(class Sq
 
	AIInfo::RegisterAPI(engine);
 
}
 

	
 
AIInfo *AIScannerInfo::SelectRandomAI() const
 
{
 
	uint num_random_ais = 0;
 
	for (ScriptInfoList::const_iterator it = this->info_single_list.begin(); it != this->info_single_list.end(); it++) {
 
		AIInfo *i = static_cast<AIInfo *>((*it).second);
 
	for (const auto &item : info_single_list) {
 
		AIInfo *i = static_cast<AIInfo *>(item.second);
 
		if (i->UseAsRandomAI()) num_random_ais++;
 
	}
 

	
 
	if (num_random_ais == 0) {
 
		DEBUG(script, 0, "No suitable AI found, loading 'dummy' AI.");
 
		return this->info_dummy;
 
@@ -118,17 +118,16 @@ AIInfo *AIScannerInfo::FindInfo(const ch
 

	
 
	AIInfo *info = nullptr;
 
	int version = -1;
 

	
 
	/* See if there is a compatible AI which goes by that name, with the highest
 
	 *  version which allows loading the requested version */
 
	ScriptInfoList::iterator it = this->info_list.begin();
 
	for (; it != this->info_list.end(); it++) {
 
		AIInfo *i = static_cast<AIInfo *>((*it).second);
 
	for (const auto &item : this->info_list) {
 
		AIInfo *i = static_cast<AIInfo *>(item.second);
 
		if (strcasecmp(ai_name, i->GetName()) == 0 && i->CanLoadFromVersion(versionParam) && (version == -1 || i->GetVersion() > version)) {
 
			version = (*it).second->GetVersion();
 
			version = item.second->GetVersion();
 
			info = i;
 
		}
 
	}
 

	
 
	return info;
 
}
 
@@ -155,11 +154,11 @@ AILibrary *AIScannerLibrary::FindLibrary
 
	/* Internally we store libraries as 'library.version' */
 
	char library_name[1024];
 
	seprintf(library_name, lastof(library_name), "%s.%d", library, version);
 
	strtolower(library_name);
 

	
 
	/* Check if the library + version exists */
 
	ScriptInfoList::iterator iter = this->info_list.find(library_name);
 
	if (iter == this->info_list.end()) return nullptr;
 
	ScriptInfoList::iterator it = this->info_list.find(library_name);
 
	if (it == this->info_list.end()) return nullptr;
 

	
 
	return static_cast<AILibrary *>((*iter).second);
 
	return static_cast<AILibrary *>((*it).second);
 
}
src/game/game_scanner.cpp
Show inline comments
 
@@ -57,17 +57,16 @@ GameInfo *GameScannerInfo::FindInfo(cons
 

	
 
	GameInfo *info = nullptr;
 
	int version = -1;
 

	
 
	/* See if there is a compatible Game script which goes by that name, with the highest
 
	 *  version which allows loading the requested version */
 
	ScriptInfoList::iterator it = this->info_list.begin();
 
	for (; it != this->info_list.end(); it++) {
 
		GameInfo *i = static_cast<GameInfo *>((*it).second);
 
	for (const auto &item : this->info_list) {
 
		GameInfo *i = static_cast<GameInfo *>(item.second);
 
		if (strcasecmp(game_name, i->GetName()) == 0 && i->CanLoadFromVersion(versionParam) && (version == -1 || i->GetVersion() > version)) {
 
			version = (*it).second->GetVersion();
 
			version = item.second->GetVersion();
 
			info = i;
 
		}
 
	}
 

	
 
	return info;
 
}
 
@@ -94,11 +93,11 @@ GameLibrary *GameScannerLibrary::FindLib
 
	/* Internally we store libraries as 'library.version' */
 
	char library_name[1024];
 
	seprintf(library_name, lastof(library_name), "%s.%d", library, version);
 
	strtolower(library_name);
 

	
 
	/* Check if the library + version exists */
 
	ScriptInfoList::iterator iter = this->info_list.find(library_name);
 
	if (iter == this->info_list.end()) return nullptr;
 
	ScriptInfoList::iterator it = this->info_list.find(library_name);
 
	if (it == this->info_list.end()) return nullptr;
 

	
 
	return static_cast<GameLibrary *>((*iter).second);
 
	return static_cast<GameLibrary *>((*it).second);
 
}
src/script/api/script_controller.cpp
Show inline comments
 
@@ -74,15 +74,15 @@ ScriptController::ScriptController(Compa
 
{
 
	ScriptObject::SetCompany(company);
 
}
 

	
 
ScriptController::~ScriptController()
 
{
 
	for (LoadedLibraryList::iterator iter = this->loaded_library.begin(); iter != this->loaded_library.end(); iter++) {
 
		free((*iter).second);
 
		free((*iter).first);
 
	for (const auto &item : this->loaded_library) {
 
		free(item.second);
 
		free(item.first);
 
	}
 

	
 
	this->loaded_library.clear();
 
}
 

	
 
/* static */ uint ScriptController::GetTick()
 
@@ -126,15 +126,15 @@ ScriptController::~ScriptController()
 
	/* Get the current table/class we belong to */
 
	HSQOBJECT parent;
 
	sq_getstackobj(vm, 1, &parent);
 

	
 
	char fake_class[1024];
 

	
 
	LoadedLibraryList::iterator iter = controller->loaded_library.find(library_name);
 
	if (iter != controller->loaded_library.end()) {
 
		strecpy(fake_class, (*iter).second, lastof(fake_class));
 
	LoadedLibraryList::iterator it = controller->loaded_library.find(library_name);
 
	if (it != controller->loaded_library.end()) {
 
		strecpy(fake_class, (*it).second, lastof(fake_class));
 
	} else {
 
		int next_number = ++controller->loaded_library_count;
 

	
 
		/* Create a new fake internal name */
 
		seprintf(fake_class, lastof(fake_class), "_internalNA%d", next_number);
 

	
src/script/script_config.cpp
Show inline comments
 
@@ -29,15 +29,15 @@ void ScriptConfig::Change(const char *na
 

	
 
	this->ClearConfigList();
 

	
 
	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();
 
	}
 
}
 

	
 
@@ -46,14 +46,14 @@ ScriptConfig::ScriptConfig(const ScriptC
 
	this->name = (config->name == nullptr) ? nullptr : stredup(config->name);
 
	this->info = config->info;
 
	this->version = config->version;
 
	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();
 
}
 

	
 
ScriptConfig::~ScriptConfig()
 
{
 
@@ -76,30 +76,30 @@ const ScriptConfigItemList *ScriptConfig
 
	}
 
	return this->config_list;
 
}
 

	
 
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;
 
}
 

	
 
void ScriptConfig::SetSetting(const char *name, int value)
 
{
 
@@ -108,33 +108,33 @@ void ScriptConfig::SetSetting(const char
 

	
 
	const ScriptConfigItem *config_item = this->info->GetConfigItem(name);
 
	if (config_item == nullptr) return;
 

	
 
	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 {
 
		this->settings[stredup(name)] = value;
 
	}
 
}
 

	
 
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));
 
		}
 
	}
 
}
 

	
 
bool ScriptConfig::HasScript() const
 
{
 
@@ -183,22 +183,22 @@ void ScriptConfig::StringToSettings(cons
 
}
 

	
 
void ScriptConfig::SettingsToString(char *string, const char *last) const
 
{
 
	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);
 
	}
 

	
 
	/* Remove the last ',', but only if at least one setting was saved. */
src/script/script_info.cpp
Show inline comments
 
@@ -17,20 +17,20 @@
 

	
 
#include "../safeguards.h"
 

	
 
ScriptInfo::~ScriptInfo()
 
{
 
	/* Free all allocated strings */
 
	for (ScriptConfigItemList::iterator it = this->config_list.begin(); it != this->config_list.end(); it++) {
 
		free((*it).name);
 
		free((*it).description);
 
		if (it->labels != nullptr) {
 
			for (auto &lbl_map : *(*it).labels) {
 
	for (const auto &item : this->config_list) {
 
		free(item.name);
 
		free(item.description);
 
		if (item.labels != nullptr) {
 
			for (auto &lbl_map : *item.labels) {
 
				free(lbl_map.second);
 
			}
 
			delete it->labels;
 
			delete item.labels;
 
		}
 
	}
 
	this->config_list.clear();
 

	
 
	free(this->author);
 
	free(this->name);
 
@@ -229,14 +229,14 @@ SQInteger ScriptInfo::AddLabels(HSQUIRRE
 
{
 
	const SQChar *setting_name;
 
	if (SQ_FAILED(sq_getstring(vm, -2, &setting_name))) return SQ_ERROR;
 
	ValidateString(setting_name);
 

	
 
	ScriptConfigItem *config = nullptr;
 
	for (ScriptConfigItemList::iterator it = this->config_list.begin(); it != this->config_list.end(); it++) {
 
		if (strcmp((*it).name, setting_name) == 0) config = &(*it);
 
	for (auto &item : this->config_list) {
 
		if (strcmp(item.name, setting_name) == 0) config = &item;
 
	}
 

	
 
	if (config == nullptr) {
 
		char error[1024];
 
		seprintf(error, lastof(error), "Trying to add labels for non-defined setting '%s'", setting_name);
 
		this->engine->ThrowError(error);
 
@@ -281,28 +281,28 @@ const ScriptConfigItemList *ScriptInfo::
 
{
 
	return &this->config_list;
 
}
 

	
 
const ScriptConfigItem *ScriptInfo::GetConfigItem(const char *name) const
 
{
 
	for (ScriptConfigItemList::const_iterator it = this->config_list.begin(); it != this->config_list.end(); it++) {
 
		if (strcmp((*it).name, name) == 0) return &(*it);
 
	for (const auto &item : this->config_list) {
 
		if (strcmp(item.name, name) == 0) return &item;
 
	}
 
	return nullptr;
 
}
 

	
 
int ScriptInfo::GetSettingDefaultValue(const char *name) const
 
{
 
	for (ScriptConfigItemList::const_iterator it = this->config_list.begin(); it != this->config_list.end(); it++) {
 
		if (strcmp((*it).name, name) != 0) continue;
 
	for (const auto &item : this->config_list) {
 
		if (strcmp(item.name, name) != 0) continue;
 
		/* The default value depends on the difficulty level */
 
		switch (GetGameSettings().script.settings_profile) {
 
			case SP_EASY:   return (*it).easy_value;
 
			case SP_MEDIUM: return (*it).medium_value;
 
			case SP_HARD:   return (*it).hard_value;
 
			case SP_CUSTOM: return (*it).custom_value;
 
			case SP_EASY:   return item.easy_value;
 
			case SP_MEDIUM: return item.medium_value;
 
			case SP_HARD:   return item.hard_value;
 
			case SP_CUSTOM: return item.custom_value;
 
			default: NOT_REACHED();
 
		}
 
	}
 

	
 
	/* There is no such setting */
 
	return -1;
src/script/script_scanner.cpp
Show inline comments
 
@@ -100,20 +100,18 @@ void ScriptScanner::RescanDir()
 
	/* Scan for scripts */
 
	this->Scan(this->GetFileName(), this->GetDirectory());
 
}
 

	
 
void ScriptScanner::Reset()
 
{
 
	ScriptInfoList::iterator it = this->info_list.begin();
 
	for (; it != this->info_list.end(); it++) {
 
		free((*it).first);
 
		delete (*it).second;
 
	for (const auto &item : this->info_list) {
 
		free(item.first);
 
		delete item.second;
 
	}
 
	it = this->info_single_list.begin();
 
	for (; it != this->info_single_list.end(); it++) {
 
		free((*it).first);
 
	for (const auto &item : this->info_single_list) {
 
		free(item.first);
 
	}
 

	
 
	this->info_list.clear();
 
	this->info_single_list.clear();
 
}
 

	
 
@@ -168,15 +166,14 @@ void ScriptScanner::RegisterScript(Scrip
 
}
 

	
 
char *ScriptScanner::GetConsoleList(char *p, const char *last, bool newest_only) const
 
{
 
	p += seprintf(p, last, "List of %s:\n", this->GetScannerName());
 
	const ScriptInfoList &list = newest_only ? this->info_single_list : this->info_list;
 
	ScriptInfoList::const_iterator it = list.begin();
 
	for (; it != list.end(); it++) {
 
		ScriptInfo *i = (*it).second;
 
	for (const auto &item : list) {
 
		ScriptInfo *i = item.second;
 
		p += seprintf(p, last, "%10s (v%d): %s\n", i->GetName(), i->GetVersion(), i->GetDescription());
 
	}
 
	p += seprintf(p, last, "\n");
 

	
 
	return p;
 
}
 
@@ -270,19 +267,19 @@ static bool IsSameScript(const ContentIn
 

	
 
	return memcmp(ci->md5sum, checksum.md5sum, sizeof(ci->md5sum)) == 0;
 
}
 

	
 
bool ScriptScanner::HasScript(const ContentInfo *ci, bool md5sum)
 
{
 
	for (ScriptInfoList::iterator it = this->info_list.begin(); it != this->info_list.end(); it++) {
 
		if (IsSameScript(ci, md5sum, (*it).second, this->GetDirectory())) return true;
 
	for (const auto &item : this->info_list) {
 
		if (IsSameScript(ci, md5sum, item.second, this->GetDirectory())) return true;
 
	}
 
	return false;
 
}
 

	
 
const char *ScriptScanner::FindMainScript(const ContentInfo *ci, bool md5sum)
 
{
 
	for (ScriptInfoList::iterator it = this->info_list.begin(); it != this->info_list.end(); it++) {
 
		if (IsSameScript(ci, md5sum, (*it).second, this->GetDirectory())) return (*it).second->GetMainScript();
 
	for (const auto &item : this->info_list) {
 
		if (IsSameScript(ci, md5sum, item.second, this->GetDirectory())) return item.second->GetMainScript();
 
	}
 
	return nullptr;
 
}
0 comments (0 inline, 0 general)