Files @ e4628e1c4408
Branch filter:

Location: ATITD-Tools/Desert-Paint-Codex/Services/SettingsService.cs - annotation

Jason Maltzen
Update to .NET 7

using DesertPaintCodex.Models;
using DesertPaintCodex.Util;

namespace DesertPaintCodex.Services
{
    internal static class SettingsService
    {
        private static bool _loaded = false;
        
        private static readonly Settings _settings = new();

        public static void Get(string key, out int value, int defaultValue)
        {
            LoadIfNeeded();
            if (!_settings.TryGet(key, out value))
            {
                value = defaultValue;
            }
        }

        public static void Get(string key, out bool value, bool defaultValue)
        {
            LoadIfNeeded();
            if (!_settings.TryGet(key, out value))
            {
                value = defaultValue;
            }
        }

        public static void Set(string key, int value)
        {
            LoadIfNeeded();
            _settings.Set(key, value);
        }

        public static void Set(string key, bool value)
        {
            LoadIfNeeded();
            _settings.Set(key, value);
        }
        

        public static void Save()
        {
            LoadIfNeeded();
            string settingsPath = System.IO.Path.Combine(FileUtils.AppDataPath, "settings");
            _settings.Save(settingsPath);
        }

        public static bool Load()
        {
            _loaded = true;
            string settingsPath = System.IO.Path.Combine(FileUtils.AppDataPath, "settings");
            return _settings.Load(settingsPath);
        }

        private static void LoadIfNeeded()
        {
            if (_loaded) return;
            Load();
        }
    }
}