Files @ 4a851acc4491
Branch filter:

Location: ATITD-Tools/Desert-Paint-Lab/Settings.cs

Jason Maltzen
Fixed finding the paint bench interface with UI updates adding more shading along the borders of the color bars. Need to verify bar widths on larger interface settings, as the change to Falcon's Bait may make them wider. Also should speed up finding the paint bench, since it no longer searches every pixel on the screen one at a time until it finds the interface.
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;
        }
    }
}