69 lines
2.0 KiB
C#
69 lines
2.0 KiB
C#
using System;
|
|
using Data;
|
|
using Interfaces;
|
|
|
|
namespace Modifiers
|
|
{
|
|
[Serializable]
|
|
public class FlatStatModifier : IStatModifier
|
|
{
|
|
public Stat stat;
|
|
public float value;
|
|
public string Description => $"{stat} +{value}";
|
|
|
|
public void Apply(CharacterAttributes attributes)
|
|
{
|
|
ModifyAttributes(attributes, value);
|
|
}
|
|
|
|
public void Remove(CharacterAttributes attributes)
|
|
{
|
|
Apply(attributes, -value);
|
|
}
|
|
|
|
private void Apply(CharacterAttributes attributes, float value)
|
|
{
|
|
ModifyAttributes(attributes, value);
|
|
}
|
|
|
|
private void ModifyAttributes(CharacterAttributes attributes, float value)
|
|
{
|
|
switch (stat)
|
|
{
|
|
case Stat.Health:
|
|
attributes.ModifyHealth(value);
|
|
break;
|
|
case Stat.MaxHealth:
|
|
attributes.ModifyMaxHealth(value);
|
|
break;
|
|
case Stat.MoveSpeed:
|
|
attributes.ModifyMoveSpeed(value);
|
|
break;
|
|
case Stat.Luck:
|
|
attributes.ModifyLuck(value);
|
|
break;
|
|
case Stat.Armor:
|
|
attributes.ModifyArmor(value);
|
|
break;
|
|
case Stat.Damage:
|
|
attributes.ModifyDamage(value);
|
|
break;
|
|
case Stat.RangedDamage:
|
|
attributes.ModifyRangedDamage(value);
|
|
break;
|
|
case Stat.MeleeDamage:
|
|
attributes.ModifyMeleeDamage(value);
|
|
break;
|
|
case Stat.AttackRange:
|
|
attributes.ModifyAttackRange(value);
|
|
break;
|
|
case Stat.AttackSpeed:
|
|
attributes.ModifyAttackSpeed(value);
|
|
break;
|
|
default:
|
|
throw new ArgumentOutOfRangeException();
|
|
}
|
|
}
|
|
|
|
}
|
|
} |