2007-09-24 17:41:36 +00:00
|
|
|
|
|
|
|
#region ================== Copyright (c) 2007 Pascal vd Heiden
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
|
|
|
|
* This program is released under GNU General Public License
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region ================== Namespaces
|
|
|
|
|
2007-06-14 23:31:57 +00:00
|
|
|
using System;
|
|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Globalization;
|
|
|
|
using System.Text;
|
2007-09-27 22:55:03 +00:00
|
|
|
using CodeImp.DoomBuilder.IO;
|
2007-10-01 20:53:10 +00:00
|
|
|
using CodeImp.DoomBuilder.Data;
|
2007-09-27 22:55:03 +00:00
|
|
|
using System.IO;
|
2008-05-26 20:06:15 +00:00
|
|
|
using CodeImp.DoomBuilder.Editing;
|
2007-06-14 23:31:57 +00:00
|
|
|
|
2007-09-24 17:41:36 +00:00
|
|
|
#endregion
|
|
|
|
|
2007-10-21 18:06:10 +00:00
|
|
|
namespace CodeImp.DoomBuilder.Config
|
2007-06-14 23:31:57 +00:00
|
|
|
{
|
2008-01-02 21:49:43 +00:00
|
|
|
internal class ConfigurationInfo : IComparable<ConfigurationInfo>
|
2007-06-14 23:31:57 +00:00
|
|
|
{
|
2007-09-27 22:55:03 +00:00
|
|
|
#region ================== Variables
|
|
|
|
|
|
|
|
private string name;
|
|
|
|
private string filename;
|
|
|
|
private string settingskey;
|
2008-05-05 15:16:39 +00:00
|
|
|
private string defaultlumpname;
|
2007-10-09 20:47:08 +00:00
|
|
|
private string nodebuildersave;
|
|
|
|
private string nodebuildertest;
|
2007-10-01 20:53:10 +00:00
|
|
|
private DataLocationList resources;
|
2007-09-28 09:55:23 +00:00
|
|
|
private string testprogram;
|
|
|
|
private string testparameters;
|
2008-05-26 20:06:15 +00:00
|
|
|
private List<ThingsFilter> thingsfilters;
|
2007-09-27 22:55:03 +00:00
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region ================== Properties
|
|
|
|
|
|
|
|
public string Name { get { return name; } }
|
|
|
|
public string Filename { get { return filename; } }
|
2008-05-05 15:16:39 +00:00
|
|
|
public string DefaultLumpName { get { return defaultlumpname; } }
|
2007-10-09 20:47:08 +00:00
|
|
|
public string NodebuilderSave { get { return nodebuildersave; } set { nodebuildersave = value; } }
|
|
|
|
public string NodebuilderTest { get { return nodebuildertest; } set { nodebuildertest = value; } }
|
2007-10-01 20:53:10 +00:00
|
|
|
public DataLocationList Resources { get { return resources; } }
|
2007-09-29 15:43:59 +00:00
|
|
|
public string TestProgram { get { return testprogram; } set { testprogram = value; } }
|
|
|
|
public string TestParameters { get { return testparameters; } set { testparameters = value; } }
|
2008-05-26 20:06:15 +00:00
|
|
|
internal ICollection<ThingsFilter> ThingsFilters { get { return thingsfilters; } }
|
2007-09-27 22:55:03 +00:00
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region ================== Constructor / Disposer
|
|
|
|
|
2007-06-14 23:31:57 +00:00
|
|
|
// Constructor
|
2008-05-05 15:16:39 +00:00
|
|
|
public ConfigurationInfo(Configuration cfg, string filename)
|
2007-06-14 23:31:57 +00:00
|
|
|
{
|
|
|
|
// Initialize
|
|
|
|
this.filename = filename;
|
2007-09-27 22:55:03 +00:00
|
|
|
this.settingskey = Path.GetFileNameWithoutExtension(filename).ToLower();
|
|
|
|
|
2008-05-05 15:16:39 +00:00
|
|
|
// Load settings from game configuration
|
|
|
|
this.name = cfg.ReadSetting("game", "<unnamed game>");
|
|
|
|
this.defaultlumpname = cfg.ReadSetting("defaultlumpname", "");
|
|
|
|
|
2007-09-27 22:55:03 +00:00
|
|
|
// Load settings from program configuration
|
2007-10-09 20:47:08 +00:00
|
|
|
this.nodebuildersave = General.Settings.ReadSetting("configurations." + settingskey + ".nodebuildersave", "");
|
|
|
|
this.nodebuildertest = General.Settings.ReadSetting("configurations." + settingskey + ".nodebuildertest", "");
|
2007-09-28 09:55:23 +00:00
|
|
|
this.testprogram = General.Settings.ReadSetting("configurations." + settingskey + ".testprogram", "");
|
|
|
|
this.testparameters = General.Settings.ReadSetting("configurations." + settingskey + ".testparameters", "");
|
2007-12-01 01:32:56 +00:00
|
|
|
this.resources = new DataLocationList(General.Settings.Config, "configurations." + settingskey + ".resources");
|
2008-05-26 20:06:15 +00:00
|
|
|
|
|
|
|
// Make list of things filters
|
|
|
|
thingsfilters = new List<ThingsFilter>();
|
|
|
|
IDictionary cfgfilters = General.Settings.ReadSetting("configurations." + settingskey + ".thingsfilters", new Hashtable());
|
|
|
|
foreach(DictionaryEntry de in cfgfilters)
|
|
|
|
{
|
|
|
|
thingsfilters.Add(new ThingsFilter(General.Settings.Config, "configurations." + settingskey + ".thingsfilters." + de.Key));
|
|
|
|
}
|
2007-06-14 23:31:57 +00:00
|
|
|
}
|
|
|
|
|
2007-09-27 22:55:03 +00:00
|
|
|
// Constructor
|
|
|
|
private ConfigurationInfo()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region ================== Methods
|
|
|
|
|
2007-06-14 23:31:57 +00:00
|
|
|
// This compares it to other ConfigurationInfo objects
|
|
|
|
public int CompareTo(ConfigurationInfo other)
|
|
|
|
{
|
|
|
|
// Compare
|
|
|
|
return name.CompareTo(other.name);
|
|
|
|
}
|
2007-09-27 22:55:03 +00:00
|
|
|
|
|
|
|
// This saves the settings to program configuration
|
|
|
|
public void SaveSettings()
|
|
|
|
{
|
|
|
|
// Write to configuration
|
2007-10-09 20:47:08 +00:00
|
|
|
General.Settings.WriteSetting("configurations." + settingskey + ".nodebuildersave", nodebuildersave);
|
|
|
|
General.Settings.WriteSetting("configurations." + settingskey + ".nodebuildertest", nodebuildertest);
|
2007-09-28 09:55:23 +00:00
|
|
|
General.Settings.WriteSetting("configurations." + settingskey + ".testprogram", testprogram);
|
|
|
|
General.Settings.WriteSetting("configurations." + settingskey + ".testparameters", testparameters);
|
2007-12-01 01:32:56 +00:00
|
|
|
resources.WriteToConfig(General.Settings.Config, "configurations." + settingskey + ".resources");
|
2008-05-26 20:06:15 +00:00
|
|
|
|
|
|
|
// Write filters to configuration
|
|
|
|
for(int i = 0; i < thingsfilters.Count; i++)
|
|
|
|
{
|
|
|
|
thingsfilters[i].WriteSettings(General.Settings.Config,
|
|
|
|
"configurations." + settingskey + ".thingsfilters.filter" + i.ToString(CultureInfo.InvariantCulture));
|
|
|
|
}
|
2007-09-27 22:55:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// String representation
|
|
|
|
public override string ToString()
|
|
|
|
{
|
|
|
|
return name;
|
|
|
|
}
|
|
|
|
|
|
|
|
// This clones the object
|
|
|
|
public ConfigurationInfo Clone()
|
|
|
|
{
|
|
|
|
ConfigurationInfo ci = new ConfigurationInfo();
|
|
|
|
ci.name = this.name;
|
|
|
|
ci.filename = this.filename;
|
|
|
|
ci.settingskey = this.settingskey;
|
2007-10-09 20:47:08 +00:00
|
|
|
ci.nodebuildersave = this.nodebuildersave;
|
|
|
|
ci.nodebuildertest = this.nodebuildertest;
|
2007-10-01 20:53:10 +00:00
|
|
|
ci.resources = new DataLocationList();
|
2007-09-27 22:55:03 +00:00
|
|
|
ci.resources.AddRange(this.resources);
|
2007-09-28 09:55:23 +00:00
|
|
|
ci.testprogram = this.testprogram;
|
|
|
|
ci.testparameters = this.testparameters;
|
2007-09-27 22:55:03 +00:00
|
|
|
return ci;
|
|
|
|
}
|
|
|
|
|
|
|
|
// This applies settings from an object
|
|
|
|
public void Apply(ConfigurationInfo ci)
|
|
|
|
{
|
|
|
|
this.name = ci.name;
|
|
|
|
this.filename = ci.filename;
|
|
|
|
this.settingskey = ci.settingskey;
|
2007-10-09 20:47:08 +00:00
|
|
|
this.nodebuildersave = ci.nodebuildersave;
|
|
|
|
this.nodebuildertest = ci.nodebuildertest;
|
2007-10-01 20:53:10 +00:00
|
|
|
this.resources = new DataLocationList();
|
2007-09-27 22:55:03 +00:00
|
|
|
this.resources.AddRange(ci.resources);
|
2007-09-28 09:55:23 +00:00
|
|
|
this.testprogram = ci.testprogram;
|
|
|
|
this.testparameters = ci.testparameters;
|
2007-09-27 22:55:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
2007-06-14 23:31:57 +00:00
|
|
|
}
|
|
|
|
}
|