diff --git a/RPGLibrary.Implementation/AttackCommand.cs b/RPGLibrary.Implementation/AttackCommand.cs index 8f00632..e318e11 100644 --- a/RPGLibrary.Implementation/AttackCommand.cs +++ b/RPGLibrary.Implementation/AttackCommand.cs @@ -7,9 +7,9 @@ namespace RPGLibrary.Implementation.Command { private readonly Character[] _target; private readonly StrengthAttackData _attackData; - private readonly IDamageCalculator _damageCalculator; + private readonly IDamageCalculator _damageCalculator; - public AttackCommand(Character[] target, StrengthAttackData attackData, IDamageCalculator damageCalculator) + public AttackCommand(Character[] target, StrengthAttackData attackData, IDamageCalculator damageCalculator) { _target = target; _attackData = attackData; diff --git a/RPGLibrary.Implementation/StrengthAttackData.cs b/RPGLibrary.Implementation/StrengthAttackData.cs index c9383ef..b82c40e 100644 --- a/RPGLibrary.Implementation/StrengthAttackData.cs +++ b/RPGLibrary.Implementation/StrengthAttackData.cs @@ -2,7 +2,6 @@ namespace RPGLibrary.Implementation { - public record StrengthAttackData(ICharacter Source, StrengthAttribute Strength) - : AttackData(Source, Strength); + public record StrengthAttackData(ICharacter Source, StrengthAttribute Strength) : AttackData(Source, Strength); } \ No newline at end of file diff --git a/RPGLibrary.Implementation/StrengthBasedDamageCalculator.cs b/RPGLibrary.Implementation/StrengthBasedDamageCalculator.cs index cfb203b..60b09df 100644 --- a/RPGLibrary.Implementation/StrengthBasedDamageCalculator.cs +++ b/RPGLibrary.Implementation/StrengthBasedDamageCalculator.cs @@ -1,15 +1,11 @@ -using RPGLibrary.Abstraction.Character; -using RPGLibrary.Abstraction.Services; +using RPGLibrary.Abstraction.Services; namespace RPGLibrary.Implementation { - public class StrengthBasedDamageCalculator : IDamageCalculator + 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); + public double Calculate(Character target, StrengthAttackData attackData) + => Math.Clamp(attackData.Strength.Value - target.Defense.Value, RPGConstants.MinDamage, RPGConstants.MaxDamage); } diff --git a/RPGLibrary/Services/IDamageCalculator.cs b/RPGLibrary/Services/IDamageCalculator.cs index a5821d0..b637a6a 100644 --- a/RPGLibrary/Services/IDamageCalculator.cs +++ b/RPGLibrary/Services/IDamageCalculator.cs @@ -2,10 +2,12 @@ namespace RPGLibrary.Abstraction.Services { - public interface IDamageCalculator - where TAttackData : AttackData + public interface IDamageCalculator + where TCharacter : ICharacter + where TAttackData : AttackData + { - double Calculate(ICharacter target, TAttackData attackData); + double Calculate(TCharacter target, TAttackData attackData); } } \ No newline at end of file