示例#1
0
        /// <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;
        }
示例#2
0
 /// <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, "");
 }
示例#3
0
        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);
        }
示例#4
0
        /// <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?
            }
        }
示例#5
0
        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;
        }