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