40 lines
752 B
C#
40 lines
752 B
C#
using System;
|
|
|
|
namespace YachtDice.Run
|
|
{
|
|
public sealed class StoredRollBank
|
|
{
|
|
public int Value { get; private set; }
|
|
|
|
public event Action<int> OnChanged;
|
|
|
|
public void Reset()
|
|
{
|
|
SetValue(0);
|
|
}
|
|
|
|
public void Add(int amount)
|
|
{
|
|
if (amount <= 0)
|
|
return;
|
|
|
|
SetValue(Value + amount);
|
|
}
|
|
|
|
public bool TrySpend(int amount)
|
|
{
|
|
if (amount <= 0 || Value < amount)
|
|
return false;
|
|
|
|
SetValue(Value - amount);
|
|
return true;
|
|
}
|
|
|
|
private void SetValue(int value)
|
|
{
|
|
Value = Math.Max(0, value);
|
|
OnChanged?.Invoke(Value);
|
|
}
|
|
}
|
|
}
|