File diff r18750:f99c3a48f013 → r18751:3a554214098d
src/settings.cpp
Show inline comments
 
@@ -57,6 +57,8 @@
 
#include "ini_type.h"
 
#include "ai/ai_config.hpp"
 
#include "ai/ai.hpp"
 
#include "game/game_config.hpp"
 
#include "game/game.hpp"
 
#include "ship.h"
 
#include "smallmap_gui.h"
 
#include "roadveh.h"
 
@@ -1362,6 +1364,32 @@ static void AILoadConfig(IniFile *ini, c
 
	}
 
}
 

	
 
static void GameLoadConfig(IniFile *ini, const char *grpname)
 
{
 
	IniGroup *group = ini->GetGroup(grpname);
 
	IniItem *item;
 

	
 
	/* Clean any configured GameScript */
 
	GameConfig::GetConfig(GameConfig::SSS_FORCE_NEWGAME)->Change(NULL);
 

	
 
	/* If no group exists, return */
 
	if (group == NULL) return;
 

	
 
	item = group->item;
 
	if (item == NULL) return;
 

	
 
	GameConfig *config = GameConfig::GetConfig(AIConfig::SSS_FORCE_NEWGAME);
 

	
 
	config->Change(item->name);
 
	if (!config->HasScript()) {
 
		if (strcmp(item->name, "none") != 0) {
 
			DEBUG(script, 0, "The GameScript by the name '%s' was no longer found, and removed from the list.", item->name);
 
			return;
 
		}
 
	}
 
	if (item->value != NULL) config->StringToSettings(item->value);
 
}
 

	
 
/**
 
 * Load a GRF configuration
 
 * @param ini       The configuration to read from.
 
@@ -1480,6 +1508,28 @@ static void AISaveConfig(IniFile *ini, c
 
	}
 
}
 

	
 
static void GameSaveConfig(IniFile *ini, const char *grpname)
 
{
 
	IniGroup *group = ini->GetGroup(grpname);
 

	
 
	if (group == NULL) return;
 
	group->Clear();
 

	
 
	GameConfig *config = GameConfig::GetConfig(AIConfig::SSS_FORCE_NEWGAME);
 
	const char *name;
 
	char value[1024];
 
	config->SettingsToString(value, lengthof(value));
 

	
 
	if (config->HasScript()) {
 
		name = config->GetName();
 
	} else {
 
		name = "none";
 
	}
 

	
 
	IniItem *item = new IniItem(group, name, strlen(name));
 
	item->SetValue(value);
 
}
 

	
 
/**
 
 * Save the version of OpenTTD to the ini file.
 
 * @param ini the ini to write to
 
@@ -1563,6 +1613,7 @@ void LoadFromConfig(bool minimal)
 
		_grfconfig_static  = GRFLoadConfig(ini, "newgrf-static", true);
 
		NewsDisplayLoadConfig(ini, "news_display");
 
		AILoadConfig(ini, "ai_players");
 
		GameLoadConfig(ini, "game_scripts");
 

	
 
		PrepareOldDiffCustom();
 
		IniLoadSettings(ini, _gameopt_settings, "gameopt", &_settings_newgame);
 
@@ -1589,6 +1640,7 @@ void SaveToConfig()
 
	GRFSaveConfig(ini, "newgrf-static", _grfconfig_static);
 
	NewsDisplaySaveConfig(ini, "news_display");
 
	AISaveConfig(ini, "ai_players");
 
	GameSaveConfig(ini, "game_scripts");
 
	SaveVersionInConfig(ini);
 
	ini->SaveToDisk(_config_file);
 
	delete ini;