using System.ComponentModel; using System.Runtime.CompilerServices; using JetBrains.Annotations; namespace DesertPaintCodex.Models { public class RecipeItem : INotifyPropertyChanged { private const uint PigmentMax = 25; private Reagent _reagent; public Reagent Reagent { get => _reagent; set { _reagent = value; NotifyPropertyChanged(nameof(Reagent)); } } private uint _quantity; public uint Quantity { get => _quantity; set { _quantity = value; NotifyPropertyChanged(nameof(Quantity)); } } private uint _maxQty; public uint MaxQty { get => _maxQty; set { _maxQty = value; NotifyPropertyChanged(nameof(MaxQty)); } } private bool _first; public bool First { get => _first; set { _first = value; NotifyPropertyChanged(nameof(First)); } } private bool _last; public bool Last { get => _last; set { _last = value; NotifyPropertyChanged(nameof(Last)); } } private bool _unused; public bool Unused { get => _unused; set { _unused = value; NotifyPropertyChanged(nameof(Unused)); } } public RecipeItem(Reagent reagent, uint quantity) { _reagent = reagent; Quantity = quantity; MaxQty = reagent.IsCatalyst ? 1 : PigmentMax; } public override string ToString() { return $"{Reagent.Name} {Quantity}"; } public event PropertyChangedEventHandler? PropertyChanged; [NotifyPropertyChangedInvocator] private void NotifyPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }