/// <summary> /// Gets the property of the given key. /// </summary> /// <param name="name">Name of the property.</param> /// <param name="defaultValue">Value to use if it cannot be found.</param> /// <returns></returns> private static string Get(Xmlconfig config, string name, string defaultValue) { if (config.Settings.Contains(name)) return config.Settings[name].Value; config.Settings[name].Value = defaultValue; return defaultValue; }
/// <summary> /// Gets the property of the given key. /// </summary> /// <param name="name">Name of the property.</param> /// <returns>The property at the key, or an empty string if it cannot be found.</returns> private static string Get(Xmlconfig config, string name) { return Get(config, name, ""); }
public static void WriteOptions(VTankOptions options) { KeysConverter kc = new KeysConverter(); string filename = GetConfigFilePath(); Xmlconfig config = new Xmlconfig(); config.Settings["ServerAddress"].Value = options.ServerAddress; config.Settings["ServerPort"].Value = options.ServerPort; config.Settings["DefaultAccount"].Value = options.DefaultAccount; config.Settings["MapsFolder"].Value = options.MapsFolder; config.Settings["options/video/Resolution"].Value = options.videoOptions.Resolution; config.Settings["options/video/Windowed"].Value = options.videoOptions.Windowed; config.Settings["options/video/TextureQuality"].Value = options.videoOptions.TextureQuality; config.Settings["options/video/AntiAliasing"].Value = options.videoOptions.AntiAliasing; config.Settings["options/video/ShadingEnabled"].Value = options.videoOptions.ShadingEnabled; config.Settings["options/audio/ambientSound/Volume"].Value = options.audioOptions.ambientSound.Volume; config.Settings["options/audio/ambientSound/Muted"].Value = options.audioOptions.ambientSound.Muted; config.Settings["options/audio/backgroundSound/Volume"].Value = options.audioOptions.backgroundSound.Volume; config.Settings["options/audio/backgroundSound/Muted"].Value = options.audioOptions.backgroundSound.Muted; config.Settings["options/gameplay/ShowNames"].Value = options.gamePlayOptions.ShowNames; config.Settings["options/gameplay/ProfanityFilter"].Value = options.gamePlayOptions.ProfanityFilter; config.Settings["options/gameplay/InterfacePlugin"].Value = options.gamePlayOptions.InterfacePlugin; config.Settings["options/keybindings/Forward"].Value = kc.ConvertToString(options.keyBindings.Forward); config.Settings["options/keybindings/Backward"].Value = kc.ConvertToString(options.keyBindings.Backward); config.Settings["options/keybindings/RotateLeft"].Value = kc.ConvertToString(options.keyBindings.RotateLeft); config.Settings["options/keybindings/RotateRight"].Value = kc.ConvertToString(options.keyBindings.RotateRight); //config.Settings["options/keybindings/FirePrimary"].Value = kc.ConvertToString(options.keyBindings.FirePrimary); //config.Settings["options/keybindings/FireSecondary"].Value = kc.ConvertToString(options.keyBindings.FireSecondary); config.Settings["options/keybindings/Menu"].Value = kc.ConvertToString(options.keyBindings.Menu); config.Settings["options/keybindings/Minimap"].Value = kc.ConvertToString(options.keyBindings.Minimap); config.Settings["options/keybindings/Score"].Value = kc.ConvertToString(options.keyBindings.Score); config.Settings["options/keybindings/Camera"].Value = kc.ConvertToString(options.keyBindings.Camera); config.Settings["options/keybindings/Pointer"].Value = options.keyBindings.Pointer; /*if (!System.IO.File.Exists(filename)) { System.IO.FileStream stream = System.IO.File.Create(filename); stream.Close(); } ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = filename; Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration( map, ConfigurationUserLevel.None); foreach (String key in ConfigurationManager.AppSettings.AllKeys) { configuration.AppSettings.Settings[key].Value = ConfigurationManager.AppSettings[key]; } configuration.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings");*/ if (!config.Commit()) config.Save(filename); }
/// <summary> /// Convert an old type of configuration file to a new one, porting the settings over. /// </summary> /// <param name="config"></param> /// <param name="filename"></param> private static void ConvertFromLegacyConfig(Xmlconfig config, string filename) { try { ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = filename; Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration( map, ConfigurationUserLevel.None); ConfigurationManager.RefreshSection("appSettings"); foreach (String key in ConfigurationManager.AppSettings.AllKeys) { if (key.Contains("ClientSettings")) continue; string newKey = key.Replace('.', '/'); try { config.Settings[newKey].Value = configuration.AppSettings.Settings[key].Value; } catch (NullReferenceException) { // Occasionally some obsolete fields will be removed from a config file but leave behind // traces. This watches for that case. } } } catch (Exception ex) { string errorMessage = ex.Message; string stackTrace = ex.StackTrace.ToString(); Console.WriteLine("{0}/{1}", errorMessage, stackTrace); throw; // TODO: Should we do something here? } }
public static VTankOptions ReadOptions() { bool doCommit = false; VTankOptions options = new VTankOptions(); KeysConverter kc = new KeysConverter(); VideoOptions defaultVideo = getDefaultVideoOptions(); AudioOptions defaultAudio = getDefaultAudioOptions(); GamePlayOptions defaultGame = getDefaultGamePlayOptions(); KeyBindings defaultKeys = getDefaultKeyBindings(); string filename = GetConfigFilePath(); if (!File.Exists(filename)) doCommit = true; Xmlconfig config = new Xmlconfig(filename, true); try { if (config.Settings.Name == "configuration") { // Old configuration file. Port to new configuration type. config.NewXml("xml"); doCommit = true; ConvertFromLegacyConfig(config, filename); } } catch (Exception) { MessageBox.Show("Warning: Your old configuration settings have been lost due to an unforeseen error.", "Old configuration settings lost!", MessageBoxButtons.OK, MessageBoxIcon.Error); } // Configure options. // Format: options.Key = Get(config, "Key", "DefaultValue"); options.ServerAddress = Get(config, "ServerAddress", "glacier2a.cis.vtc.edu"); options.ServerPort = Get(config, "ServerPort", "4063"); options.DefaultAccount = Get(config, "DefaultAccount"); options.MapsFolder = Get(config, "MapsFolder", "maps"); options.videoOptions.Resolution = Get(config, "options/video/Resolution", defaultVideo.Resolution); options.videoOptions.Windowed = Get(config, "options/video/Windowed", defaultVideo.Windowed); options.videoOptions.TextureQuality = Get(config, "options/video/TextureQuality", defaultVideo.TextureQuality); options.videoOptions.AntiAliasing = Get(config, "options/video/AntiAliasing", defaultVideo.AntiAliasing); options.videoOptions.ShadingEnabled = Get(config, "options/video/ShadingEnabled", defaultVideo.ShadingEnabled); options.audioOptions.ambientSound.Volume = Get(config, "options/audio/ambientSound/Volume", defaultAudio.ambientSound.Volume); options.audioOptions.ambientSound.Muted = Get(config, "options/audio/ambientSound/Muted", defaultAudio.ambientSound.Muted); options.audioOptions.backgroundSound.Volume = Get(config, "options/audio/backgroundSound/Volume", defaultAudio.backgroundSound.Volume); options.audioOptions.backgroundSound.Muted = Get(config, "options/audio/backgroundSound/Muted", defaultAudio.backgroundSound.Muted); options.gamePlayOptions.ShowNames = Get(config, "options/gameplay/ShowNames", defaultGame.ShowNames); options.gamePlayOptions.ProfanityFilter = Get(config, "options/gameplay/ProfanityFilter", defaultGame.ProfanityFilter); options.gamePlayOptions.InterfacePlugin = Get(config, "options/gameplay/InterfacePlugin", defaultGame.InterfacePlugin); options.keyBindings.Forward = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/Forward", defaultKeys.Forward.ToString())); options.keyBindings.Backward = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/Backward", defaultKeys.Backward.ToString())); options.keyBindings.RotateLeft = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/RotateLeft", defaultKeys.RotateLeft.ToString())); options.keyBindings.RotateRight = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/RotateRight", defaultKeys.RotateRight.ToString())); //options.keyBindings.FirePrimary = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/FirePrimary", "")); //options.keyBindings.FireSecondary = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/FireSecondary", "")); options.keyBindings.Menu = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/Menu", defaultKeys.Menu.ToString())); options.keyBindings.Minimap = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/Minimap", defaultKeys.Minimap.ToString())); options.keyBindings.Score = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/Score", defaultKeys.Score.ToString())); options.keyBindings.Camera = (Keys)kc.ConvertFromString(Get(config, "options/keybindings/Camera", defaultKeys.Camera.ToString())); options.keyBindings.Pointer = Get(config, "options/keybindings/Pointer", defaultKeys.Pointer); if (doCommit) WriteOptions(options); return options; }