Files
bluflame/intromat/Intromat/ViewModels/Editors/FloatExpressionEditorViewModel.cs
2026-04-18 22:31:51 +02:00

50 lines
1.5 KiB
C#

using System;
using Intromat.Nodes.Code;
using Intromat.Views.Editors;
using ReactiveUI;
using Splat;
namespace Intromat.ViewModels.Editors
{
public class FloatExpressionEditorViewModel : ExpressionEditorBaseViewModel<float, FloatLiteralValue, FloatLiteralModel>
{
private float _maxValue;
private float _minValue;
static FloatExpressionEditorViewModel()
{
Locator.CurrentMutable.Register(() => new FloatExpressionEditorView(), typeof(IViewFor<FloatExpressionEditorViewModel>));
}
public FloatExpressionEditorViewModel()
{
this.WhenAnyValue(vm => vm.Value)
.Subscribe(t =>
{
var newValue = t!.Evaluate();
if (newValue > MaxValue)
{
var delta = newValue - MinValue;
MaxValue = newValue + delta;
}
else if (newValue < MinValue)
{
var delta = MaxValue - newValue;
MinValue = newValue - delta;
}
});
}
public float MinValue
{
get => _minValue;
set => this.RaiseAndSetIfChanged(ref _minValue, value);
}
public float MaxValue
{
get => _maxValue;
set => this.RaiseAndSetIfChanged(ref _maxValue, value);
}
}
}