30 lines
952 B
C#
30 lines
952 B
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using RPGCore.Core.Objects;
|
|
|
|
namespace RPGCore.Stats.ObjectModules.StatsObjectModule
|
|
{
|
|
public class StatModifierContext
|
|
{
|
|
private readonly List<StatModifier> _modifiers = new();
|
|
|
|
public int add => _modifiers.Where(m => m.type is StatModifierType.Add).Sum(m => m.value);
|
|
public int multiply => _modifiers.Where(m => m.type is StatModifierType.Multiply).Sum(m => m.value);
|
|
public int @override => _modifiers.Where(m => m.type is StatModifierType.Override).Max(m => m.value);
|
|
|
|
public void Add(StatModifier modifier)
|
|
{
|
|
_modifiers.Add(modifier);
|
|
}
|
|
|
|
public void Remove(StatModifier modifier)
|
|
{
|
|
_modifiers.Remove(modifier);
|
|
}
|
|
|
|
public void RemoveBySource(BaseObject source)
|
|
{
|
|
_modifiers.RemoveAll(m => m.source == source);
|
|
}
|
|
}
|
|
} |