using RPGLibrary.Abstraction.Character; using RPGLibrary.Abstraction.Services; namespace RPGLibrary.Implementation { public class StrengthBasedDamageCalculator : IDamageCalculator { public double Calculate(ICharacter target, StrengthAttackData attackData) => CalculateInternal((dynamic)target, attackData); private double CalculateInternal(Character target, StrengthAttackData attackData) => Math.Clamp(attackData.Strength.Value - target.Defense.Value, RPGConstants.MinDamage, RPGConstants.MaxDamage); } }