changeset 5309:112325843ad5 draft

(svn r7465) -Codechange: Save the default GRF configuration.
author peter1138 <peter1138@openttd.org>
date Sun, 10 Dec 2006 11:32:54 +0000
parents 5ea9e4ffce67
children 072044d4b21e
files settings.c
diffstat 1 files changed, 22 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/settings.c
+++ b/settings.c
@@ -1495,7 +1495,7 @@
 #undef NO
 #undef CR
 
-const char *GRFProcessParams(const IniItem *item, uint index)
+static const char *GRFProcessParams(const IniItem *item, uint index)
 {
 	GRFConfig *c;
 
@@ -1530,6 +1530,26 @@
 	return c->filename;
 }
 
+static void GRFSaveConfig(IniFile *ini, const char *grpname, const GRFConfig *list)
+{
+	IniGroup *group = ini_getgroup(ini, grpname, -1);
+	IniItem **item;
+	const GRFConfig *c;
+
+	if (group == NULL) return;
+	group->item = NULL;
+	item = &group->item;
+
+	for (c = list; c != NULL; c = c->next) {
+		char params[512];
+		GRFBuildParamList(params, c, lastof(params));
+
+		*item = ini_item_alloc(group, c->filename, strlen(c->filename));
+		(*item)->value = pool_strdup(&ini->pool, params, strlen(params));
+		item = &(*item)->next;
+	}
+}
+
 /* Common handler for saving/loading variables to the configuration file */
 static void HandleSettingDescs(IniFile *ini, SettingDescProc *proc, SettingDescProcList *proc_list)
 {
@@ -1564,6 +1584,7 @@
 {
 	IniFile *ini = ini_load(_config_file);
 	HandleSettingDescs(ini, ini_save_settings, ini_save_setting_list);
+	GRFSaveConfig(ini, "newgrf", _grfconfig_newgame);
 	ini_save(_config_file, ini);
 	ini_free(ini);
 }