migrate settings

This commit is contained in:
2024-06-18 11:17:57 +02:00
parent 0f3e93bfff
commit 40279ba6b9
4 changed files with 55 additions and 70 deletions

View File

@@ -1,67 +1,22 @@
using Newtonsoft.Json;
using Pilz.Configuration;
namespace ModpackUpdater;
public class AppConfig
public class AppConfig : IChildSettings, ISettingsIdentifier
{
public static string Identifier => "pilz.appconfig";
public string LastMinecraftProfilePath { get; set; }
public string LastConfigFilePath { get; set; }
public List<string> KeepLocalFiles { get; set; } = [];
public List<string> KeepLocalFiles { get; } = [];
public void Reset()
{
LastMinecraftProfilePath = null;
LastConfigFilePath = null;
KeepLocalFiles.Clear();
KeepLocalFiles.Add("OptiFine_1.7.10_HD_U_E7.jar");
}
private static AppConfig instance = null;
public static AppConfig Instance
{
get
{
if (instance is null)
{
if (File.Exists(SettingsPath))
instance = LoadConfig(SettingsPath);
else
{
instance = new AppConfig();
instance.Reset();
}
}
return instance;
}
}
private static string settingsPath = string.Empty;
private static string SettingsPath
{
get
{
const string AppDataDirectoryName = "MinecraftModpackUpdater";
const string SettingsFileName = "Settings.json";
if (string.IsNullOrEmpty(settingsPath))
{
settingsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), AppDataDirectoryName);
Directory.CreateDirectory(settingsPath);
settingsPath = Path.Combine(settingsPath, SettingsFileName);
}
return settingsPath;
}
}
public void SaveConfig()
{
File.WriteAllText(SettingsPath, JsonConvert.SerializeObject(this));
}
private static AppConfig LoadConfig(string filePath)
{
return JsonConvert.DeserializeObject<AppConfig>(File.ReadAllText(filePath));
}
public static AppConfig Instance => Program.Settings.Get<AppConfig>();
}