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));
}
}
}