package fr.takima.lotka_volterra.predation; import fr.takima.lotka_volterra.common.Probability; import fr.takima.lotka_volterra.common.Distance; import fr.takima.lotka_volterra.predator.Satiety; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Random; @Component public class DefaultPredationConfigurer implements PredationConfigurer { private final Random random; private final Distance maxDistance; private final Probability successProbability; private final Satiety successSatietyGain; private final Satiety failureSatietyLoss; public DefaultPredationConfigurer(Random random, PredationProperties properties) { this.random = random; this.maxDistance = new Distance(properties.getMaxDistance()); this.successProbability = new Probability(BigDecimal.valueOf(properties.getSuccessProbability())); this.successSatietyGain = new Satiety(properties.getSuccessSatietyGain()); this.failureSatietyLoss = new Satiety(properties.getFailureSatietyLoss()); } @Override public Random random() { return random; } @Override public Distance maxDistance() { return maxDistance; } @Override public Probability successProbability() { return successProbability; } @Override public Satiety successSatietyGain() { return successSatietyGain; } @Override public Satiety failureSatietyLoss() { return failureSatietyLoss; } }