public void Reload(String filename, Dictionary <PropertyKey, String> defaultValues = null)
        {
            string AppRoot = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);

            this.filename = Path.Combine(AppRoot, filename);;
            if (defaultValues != null)
            {
                list = defaultValues;
            }

            if (File.Exists(this.filename))
            {
                LoadFromFile(this.filename);
            }

            if (!CheckCRC())
            {
                list = GameProperties.GetDefaultConfigValues();
                Save();
            }
        }
        private void LoadFromFile(String file)
        {
            foreach (String line in File.ReadAllLines(file))
            {
                if ((!String.IsNullOrEmpty(line)) &&
                    (!line.StartsWith(";", StringComparison.Ordinal)) &&
                    (!line.StartsWith("#", StringComparison.Ordinal)) &&
                    (line.Contains('=')))
                {
                    int    index = line.IndexOf('=');
                    String key   = line.Substring(0, index).Trim();
                    String value = line.Substring(index + 1).Trim();

                    if ((value.StartsWith("\"", StringComparison.Ordinal) && value.EndsWith("\"", StringComparison.Ordinal)) ||
                        (value.StartsWith("'", StringComparison.Ordinal) && value.EndsWith("'", StringComparison.Ordinal)))
                    {
                        value = value.Substring(1, value.Length - 2);
                    }

                    try
                    {
                        PropertyKey k = (PropertyKey)Enum.Parse(typeof(PropertyKey), key);
                        if (list.ContainsKey(k))
                        {
                            list[k] = value;
                        }
                        else
                        {
                            list.Add(k, value);
                        }

                        if (k == PropertyKey.PLAYER_NAME && value.Length > 10)
                        {
                            Reload("", GameProperties.GetDefaultConfigValues());
                        }
                    }
                    catch { }
                }
            }
        }