Overlay default values if it doesn't exist

This commit is contained in:
Asriel Camora
2023-11-14 16:15:13 -08:00
parent 5f33779409
commit 6ccbe6303e
2 changed files with 25 additions and 0 deletions
+3
View File
@@ -1,5 +1,6 @@
using Craftimizer.Simulator.Actions;
using Craftimizer.Solver;
using Craftimizer.Utils;
using Dalamud.Configuration;
using Newtonsoft.Json;
using System;
@@ -84,7 +85,9 @@ public class Configuration : IPluginConfiguration
public IReadOnlyList<Macro> Macros => macros;
public int ReliabilitySimulationCount { get; set; } = 500;
public bool ConditionRandomness { get; set; } = true;
[JsonConverter(typeof(PopulateConverter))]
public SolverConfig SimulatorSolverConfig { get; set; } = SolverConfig.SimulatorDefault;
[JsonConverter(typeof(PopulateConverter))]
public SolverConfig SynthHelperSolverConfig { get; set; } = SolverConfig.SynthHelperDefault;
public bool EnableSynthHelper { get; set; } = true;
public bool ShowOptimalMacroStat { get; set; } = true;
+22
View File
@@ -0,0 +1,22 @@
using Newtonsoft.Json;
using System;
namespace Craftimizer.Utils;
public class PopulateConverter : JsonConverter
{
public override bool CanConvert(Type objectType) =>
objectType.GetConstructor(Type.EmptyTypes) != null;
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
{
existingValue ??= Activator.CreateInstance(objectType) ?? throw new ArgumentException($"Could not create object of type {objectType}", nameof(objectType));
serializer.Populate(reader, existingValue);
return existingValue;
}
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
{
serializer.Serialize(writer, value);
}
}