Fix more typing
This commit is contained in:
@@ -7,9 +7,9 @@ namespace RPGLibrary.Implementation.Command
|
||||
{
|
||||
private readonly Character[] _target;
|
||||
private readonly StrengthAttackData _attackData;
|
||||
private readonly IDamageCalculator<StrengthAttackData> _damageCalculator;
|
||||
private readonly IDamageCalculator<Character, StrengthAttackData> _damageCalculator;
|
||||
|
||||
public AttackCommand(Character[] target, StrengthAttackData attackData, IDamageCalculator<StrengthAttackData> damageCalculator)
|
||||
public AttackCommand(Character[] target, StrengthAttackData attackData, IDamageCalculator<Character, StrengthAttackData> damageCalculator)
|
||||
{
|
||||
_target = target;
|
||||
_attackData = attackData;
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -1,14 +1,10 @@
|
||||
using RPGLibrary.Abstraction.Character;
|
||||
using RPGLibrary.Abstraction.Services;
|
||||
using RPGLibrary.Abstraction.Services;
|
||||
|
||||
namespace RPGLibrary.Implementation
|
||||
{
|
||||
public class StrengthBasedDamageCalculator : IDamageCalculator<StrengthAttackData>
|
||||
public class StrengthBasedDamageCalculator : IDamageCalculator<Character, StrengthAttackData>
|
||||
{
|
||||
public double Calculate(ICharacter target, StrengthAttackData attackData)
|
||||
=> CalculateInternal((dynamic)target, attackData);
|
||||
|
||||
private double CalculateInternal(Character target, StrengthAttackData attackData)
|
||||
public double Calculate(Character target, StrengthAttackData attackData)
|
||||
=> Math.Clamp(attackData.Strength.Value - target.Defense.Value, RPGConstants.MinDamage, RPGConstants.MaxDamage);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
|
||||
namespace RPGLibrary.Abstraction.Services
|
||||
{
|
||||
public interface IDamageCalculator<TAttackData>
|
||||
public interface IDamageCalculator<TCharacter, TAttackData>
|
||||
where TCharacter : ICharacter
|
||||
where TAttackData : AttackData
|
||||
|
||||
{
|
||||
double Calculate(ICharacter target, TAttackData attackData);
|
||||
double Calculate(TCharacter target, TAttackData attackData);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user