Changeset - r14828:12f0b09ddc04
[Not reviewed]
master
0 4 0
yexo - 15 years ago 2010-03-15 22:42:43
yexo@openttd.org
(svn r19429) -Fix: when the title game contains an AIPL block the AI settinsg where overwritten by those from the title game
4 files changed with 18 insertions and 10 deletions:
0 comments (0 inline, 0 general)
src/ai/ai_config.cpp
Show inline comments
 
@@ -93,13 +93,13 @@ const AIConfigItemList *AIConfig::GetCon
 
	return this->config_list;
 
}
 

	
 
AIConfig *AIConfig::GetConfig(CompanyID company, bool forceNewgameSetting)
 
AIConfig *AIConfig::GetConfig(CompanyID company, AISettingSource source)
 
{
 
	AIConfig **config;
 
	if (!forceNewgameSetting) {
 
		config = (_game_mode == GM_MENU) ? &_settings_newgame.ai_config[company] : &_settings_game.ai_config[company];
 
	if (source == AISS_FORCE_NEWGAME || (source == AISS_DEFAULT && _game_mode == GM_MENU)) {
 
		config = &_settings_newgame.ai_config[company];
 
	} else {
 
		config = &_settings_newgame.ai_config[company];
 
		config = &_settings_game.ai_config[company];
 
	}
 
	if (*config == NULL) *config = new AIConfig();
 
	return *config;
src/ai/ai_config.hpp
Show inline comments
 
@@ -61,10 +61,18 @@ public:
 
	 */
 
	const AIConfigItemList *GetConfigList();
 

	
 
	/* Where to get the config from, either default (depends on current game
 
	 * mode) or force either newgame or normal */
 
	enum AISettingSource {
 
		AISS_DEFAULT,       ///< Get the AI config from the current game mode
 
		AISS_FORCE_NEWGAME, ///< Get the newgame AI config
 
		AISS_FORCE_GAME,    ///< Get the AI config from the current game
 
	};
 

	
 
	/**
 
	 * Get the config of a company.
 
	 */
 
	static AIConfig *GetConfig(CompanyID company, bool forceNewgameSetting = false);
 
	static AIConfig *GetConfig(CompanyID company, AISettingSource source = AISS_DEFAULT);
 

	
 
	/**
 
	 * Get the value of a setting for this config. It might fallback to his
src/saveload/ai_sl.cpp
Show inline comments
 
@@ -61,7 +61,7 @@ static void Load_AIPL()
 
{
 
	/* Free all current data */
 
	for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
 
		AIConfig::GetConfig(c)->ChangeAI(NULL);
 
		AIConfig::GetConfig(c, AIConfig::AISS_FORCE_GAME)->ChangeAI(NULL);
 
	}
 

	
 
	CompanyID index;
 
@@ -74,7 +74,7 @@ static void Load_AIPL()
 
			continue;
 
		}
 

	
 
		AIConfig *config = AIConfig::GetConfig(index);
 
		AIConfig *config = AIConfig::GetConfig(index, AIConfig::AISS_FORCE_GAME);
 
		if (StrEmpty(_ai_saveload_name)) {
 
			/* A random AI. */
 
			config->ChangeAI(NULL, -1, false, true);
src/settings.cpp
Show inline comments
 
@@ -1202,7 +1202,7 @@ static void AILoadConfig(IniFile *ini, c
 

	
 
	/* Clean any configured AI */
 
	for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
 
		AIConfig::GetConfig(c, true)->ChangeAI(NULL);
 
		AIConfig::GetConfig(c, AIConfig::AISS_FORCE_NEWGAME)->ChangeAI(NULL);
 
	}
 

	
 
	/* If no group exists, return */
 
@@ -1210,7 +1210,7 @@ static void AILoadConfig(IniFile *ini, c
 

	
 
	CompanyID c = COMPANY_FIRST;
 
	for (item = group->item; c < MAX_COMPANIES && item != NULL; c++, item = item->next) {
 
		AIConfig *config = AIConfig::GetConfig(c, true);
 
		AIConfig *config = AIConfig::GetConfig(c, AIConfig::AISS_FORCE_NEWGAME);
 

	
 
		config->ChangeAI(item->name);
 
		if (!config->HasAI()) {
 
@@ -1313,7 +1313,7 @@ static void AISaveConfig(IniFile *ini, c
 
	group->Clear();
 

	
 
	for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
 
		AIConfig *config = AIConfig::GetConfig(c, true);
 
		AIConfig *config = AIConfig::GetConfig(c, AIConfig::AISS_FORCE_NEWGAME);
 
		const char *name;
 
		char value[1024];
 
		config->SettingsToString(value, lengthof(value));
0 comments (0 inline, 0 general)