using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using HeuristicLab.Core; using HeuristicLab.Data; namespace HeuristicLab.JsonInterface { public class IntValueConverter : ValueTypeValueConverter { public override int Priority => 1; public override Type ConvertableType => typeof(IntValue); } public class DoubleValueConverter : ValueTypeValueConverter { public override int Priority => 1; public override Type ConvertableType => typeof(DoubleValue); } public class PercentValueConverter : ValueTypeValueConverter { public override int Priority => 2; public override Type ConvertableType => typeof(PercentValue); } public class BoolValueConverter : ValueTypeValueConverter { public override int Priority => 1; public override Type ConvertableType => typeof(BoolValue); } public class DateTimeValueConverter : ValueTypeValueConverter { public override int Priority => 1; public override Type ConvertableType => typeof(DateTimeValue); } public abstract class ValueTypeValueConverter : BaseConverter where ValueType : ValueTypeValue where T : struct { public override void InjectData(IItem item, JsonItem data, IJsonItemConverter root) => ((ValueType)item).Value = CastValue(data.Value); public override void Populate(IItem value, JsonItem item, IJsonItemConverter root) { item.Name = "[OverridableParamName]"; item.Value = ((ValueType)value).Value; item.Range = new object[] { GetMinValue(typeof(T)), GetMaxValue(typeof(T)) }; } } }