refactor settings load/save

- load using LINUQ
- load on child settings on demond
- prevent error when plugin has been removed
- prevent settings loose when plugin has been removed
This commit is contained in:
Pilzinsel64
2024-11-28 07:23:29 +01:00
parent 3070fab91b
commit 44ab301c24
3 changed files with 77 additions and 13 deletions

View File

@@ -97,27 +97,33 @@ public class SettingsManager : ISettingsManager
Instance.Reset();
}
protected virtual ISettings CreateInstance()
{
return new Settings();
}
protected virtual void CreateNewInstance()
{
defaultInstance = new Settings();
defaultInstance = CreateInstance();
defaultInstance.Reset();
}
protected virtual void LoadInternal()
{
defaultInstance = JsonConvert.DeserializeObject<Settings>(File.ReadAllText(ConfigFilePath), CreateJsonSerializerSettings());
defaultInstance = CreateInstance();
defaultInstance.Load(CreateJsonSerializerSettings(), File.ReadAllText(ConfigFilePath));
}
protected virtual void SaveInternal()
{
SavingSettings?.Invoke(this, EventArgs.Empty);
File.WriteAllText(ConfigFilePath, JsonConvert.SerializeObject(defaultInstance, CreateJsonSerializerSettings()));
File.WriteAllText(ConfigFilePath, defaultInstance.Save(CreateJsonSerializerSettings()));
SavedSettings?.Invoke(this, EventArgs.Empty);
}
protected virtual JsonSerializerSettings CreateJsonSerializerSettings()
public virtual JsonSerializerSettings CreateJsonSerializerSettings()
{
return new JsonSerializerSettings()
return new JsonSerializerSettings
{
Formatting = Formatting.Indented,
TypeNameHandling = TypeNameHandling.Auto,