Fix more typing

This commit is contained in:
2023-02-28 19:51:37 -08:00
parent 8391a47e4e
commit fa305f9852
4 changed files with 12 additions and 15 deletions

View File

@@ -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;

View File

@@ -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);
} }

View File

@@ -1,14 +1,10 @@
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);
private double CalculateInternal(Character target, StrengthAttackData attackData)
=> Math.Clamp(attackData.Strength.Value - target.Defense.Value, RPGConstants.MinDamage, RPGConstants.MaxDamage); => Math.Clamp(attackData.Strength.Value - target.Defense.Value, RPGConstants.MinDamage, RPGConstants.MaxDamage);
} }

View File

@@ -2,10 +2,12 @@
namespace RPGLibrary.Abstraction.Services namespace RPGLibrary.Abstraction.Services
{ {
public interface IDamageCalculator<TAttackData> public interface IDamageCalculator<TCharacter, TAttackData>
where TCharacter : ICharacter
where TAttackData : AttackData where TAttackData : AttackData
{ {
double Calculate(ICharacter target, TAttackData attackData); double Calculate(TCharacter target, TAttackData attackData);
} }
} }