Files
YachtDice/Assets/Scripts/Modifiers/Runtime/ModifierInstance.cs
T
2026-03-01 16:23:41 +07:00

30 lines
920 B
C#

using System.Collections.Generic;
using YachtDice.Modifiers.Definition;
namespace YachtDice.Modifiers.Runtime
{
public class ModifierInstance
{
public ModifierDefinition Definition { get; }
public bool IsActive { get; set; }
public int RemainingUses { get; set; }
public int Stacks { get; set; } = 1;
public Dictionary<string, float> CustomState { get; } = new();
public bool IsExpired => Definition.HasLimitedUses && RemainingUses <= 0;
public ModifierInstance(ModifierDefinition definition)
{
Definition = definition;
RemainingUses = definition.HasLimitedUses ? definition.MaxUses : -1;
}
public void ConsumeCharge(int amount = 1)
{
if (!Definition.HasLimitedUses) return;
RemainingUses -= amount;
if (RemainingUses < 0) RemainingUses = 0;
}
}
}