using PkmnLib.Dynamic.Models;
namespace PkmnLib.Dynamic.Libraries;
///
/// A damage library holds the functions related to the calculation of damage.
///
public interface IDamageCalculator
{
///
/// Calculate the damage for a given hit on a Pokemon.
///
uint GetDamage(IExecutingMove executingMove, IPokemon target, byte hitNumber, HitData hitData);
///
/// Calculate the base power for a given hit on a Pokemon.
///
byte GetBasePower(IExecutingMove executingMove, IPokemon target, byte hitNumber, HitData hitData);
///
/// Returns whether a specified hit should be critical or not.
///
bool IsCritical(IBattle battle, IExecutingMove executingMove, IPokemon target, byte hitNumber);
}