using PkmnLib.Dynamic.Models; using PkmnLib.Static; namespace PkmnLib.Dynamic.Libraries; /// <summary> /// A battle stat calculator is used to calculate stats for a Pokemon. /// </summary> public interface IBattleStatCalculator { /// <summary> /// Calculate all the flat stats of a Pokemon, disregarding stat boosts. /// </summary> void CalculateFlatStats(IPokemon pokemon, StatisticSet<uint> stats); /// <summary> /// Calculate a single flat stat of a Pokemon, disregarding stat boosts. /// </summary> uint CalculateFlatStat(IPokemon pokemon, Statistic stat); /// <summary> /// Calculate all the boosted stats of a Pokemon, including stat boosts. /// </summary> void CalculateBoostedStats(IPokemon pokemon, StatisticSet<uint> stats); /// <summary> /// Calculate a single boosted stat of a Pokemon, including stat boosts. /// </summary> uint CalculateBoostedStat(IPokemon pokemon, Statistic stat); /// <summary> /// Calculates the accuracy for a move, taking into account any accuracy modifiers. /// </summary> byte CalculateModifiedAccuracy(IExecutingMove executingMove, IPokemon target, byte hitIndex, byte moveAccuracy); }