Files
Bucket/Buckets.Logic/Container.cs
KaseToatz1337 d3de812339 added events
2024-10-03 09:16:40 +02:00

53 lines
1.4 KiB
C#

namespace Buckets.Logic
{
public abstract class Container
{
private int content;
public delegate void FullEventHandler(Container container, EventArgs eventArgs);
public delegate void OverflowEventHandler(Container container, OverflowEventArgs eventArgs);
public event FullEventHandler? Full;
public event OverflowEventHandler? Overflowed;
public int Capacity { get; }
public int Content
{
get => content;
set
{
ArgumentOutOfRangeException.ThrowIfNegative(value, nameof(Content));
if (value == Capacity)
{
Full?.Invoke(this, new());
}
else if (value > Capacity)
{
Overflowed?.Invoke(this, new(value - Capacity));
}
content = Math.Min(value, Capacity);
}
}
public Container(int capacity, int content)
{
ArgumentOutOfRangeException.ThrowIfNegative(capacity, nameof(Capacity));
Capacity = capacity;
Content = content;
}
public void Fill(int amount)
{
Content += amount;
}
public void Empty(int amount)
{
Content -= amount;
}
public void Empty()
{
Content = 0;
}
}
}