using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
namespace DesertPaintLab
{
public class Settings
{
public Settings()
{
}
private Dictionary<string, string> _settings = new Dictionary<string, string>();
public void Get(string key, out int value)
{
value = 0;
string valStr;
if ( _settings.TryGetValue(key.ToLower(), out valStr) )
{
Int32.TryParse(valStr, out value);
}
}
public void Get(string key, out bool value)
{
value = false;
string valStr;
if ( _settings.TryGetValue(key.ToLower(), out valStr) )
{
Boolean.TryParse(valStr, out value);
}
}
public void Set(string key, int value)
{
_settings[key.ToLower()] = value.ToString();
}
public void Set(string key, bool value)
{
_settings[key.ToLower()] = value.ToString();
}
public void Reset()
{
_settings.Clear();
}
public void Save(string settingsPath)
{
using (StreamWriter writer = new StreamWriter(settingsPath))
{
foreach (KeyValuePair<string, string> pair in _settings)
{
writer.WriteLine("{0}={1}", pair.Key, pair.Value);
}
}
}
static Regex optionEntry = new Regex(@"(?<opt>[^#=][^=]*)=(?<optval>.*)$");
public bool Load(string settingsPath)
{
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;
}
}
}