diff --git a/Settings.cs b/Settings.cs new file mode 100644 --- /dev/null +++ b/Settings.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text.RegularExpressions; + +namespace DesertPaintLab +{ + public class Settings + { + private Settings() + { + } + + private static Dictionary _settings = new Dictionary(); + + public static void Get(string key, out int value) + { + value = 0; + string valStr; + if ( _settings.TryGetValue(key.ToLower(), out valStr) ) + { + Int32.TryParse(valStr, out value); + } + } + public static void Get(string key, out bool value) + { + value = false; + string valStr; + if ( _settings.TryGetValue(key.ToLower(), out valStr) ) + { + Boolean.TryParse(valStr, out value); + } + } + public static void Set(string key, int value) + { + _settings[key.ToLower()] = value.ToString(); + } + public static void Get(string key, bool value) + { + _settings[key.ToLower()] = value.ToString(); + } + + public static void Save() + { + string settingsPath = System.IO.Path.Combine(FileUtils.AppDataPath, "settings"); + using (StreamWriter writer = new StreamWriter(settingsPath)) + { + foreach (KeyValuePair pair in _settings) + { + writer.WriteLine("{0}={1}", pair.Key, pair.Value); + } + } + } + + + static Regex optionEntry = new Regex(@"(?[^#=][^=]*)=(?.*)$"); + public static bool Load() + { + string settingsPath = System.IO.Path.Combine(FileUtils.AppDataPath, "settings"); + if (System.IO.File.Exists(settingsPath)) + { + string line; + Match match; + using (StreamReader reader = new StreamReader(settingsPath)) + { + while ((line = reader.ReadLine()) != null) + { + match = optionEntry.Match(line); + if (match.Success) + { + String optName = match.Groups["opt"].Value.ToLower(); + String optVal = match.Groups["optval"].Value.Trim(); + if (optName.Equals("debug")) + { + // convert + optName = "enabledebugmenu"; + } + _settings[optName.ToLower()] = optVal; + } + } + } + return true; + } + return false; + } + } +} +