//TODO: CalculateAge from BirthDate public void CalculateAge() { _ageCalculated = true; PersonAge personAge = null; try { personAge = SharedKernel.Custom.Utils.CalculateAge(BirthDate); } catch (Exception ex) { } if (null == personAge) { return; } Age = personAge.Age; _ageCalculated = false; var ageUnit = AgeUnitOptions.FirstOrDefault(x => x.Value == personAge.AgeUnit); _ageUnitCalculated = true; SelectedAgeUnit = ageUnit; _ageUnitCalculated = false; }
public override GenRange Calculate(BodyMassIndex bmi, PersonAge age) { Range <Rating> rangeForPower; if (bmi.BMI > 23 && bmi.Height.Centimeters >= 185) { rangeForPower = MaxRange; } else if (bmi.BMI < 22) { rangeForPower = MinRange; } else { rangeForPower = MediumRange; } // take player's age into account if (age > PersonAge.FromYears(25)) { rangeForPower = new Range <Rating>(rangeForPower.Lower * 1.05, rangeForPower.Upper * 1.05); } else if (age < PersonAge.FromYears(20)) { rangeForPower = new Range <Rating>(rangeForPower.Lower * 0.8, rangeForPower.Upper * 0.9); } return(new GenRange(FeatureType.Power, rangeForPower)); }
public void SetUp() { _personAge = new PersonAge(3); _dob = DateTime.Today.AddYears(-10); _dob = _dob.AddMonths(-2); _dob = _dob.AddDays(-1); }
public override GenRange Calculate(BodyMassIndex bmi, PersonAge age) { Range <Rating> rangeForSpeed; if (bmi.BMI > 22.8) { rangeForSpeed = MinRange; } else if (bmi.BMI < 21.2) { rangeForSpeed = MaxRange; } else { rangeForSpeed = MediumRange; } // take player age into account if (age > PersonAge.FromYears(30)) { rangeForSpeed = new Range <Rating>(rangeForSpeed.Lower * 0.82, rangeForSpeed.Upper * 0.88); } else if (age < PersonAge.FromYears(23)) { rangeForSpeed = new Range <Rating>(rangeForSpeed.Lower * 1.052, rangeForSpeed.Upper * 1.055); } return(new GenRange(FeatureType.Acceleration, rangeForSpeed)); }
public virtual bool Equals(PersonAge other) { if (null != other && other.GetType() == GetType()) { return other.Age == Age; } return false; }
public void should_CalculateBirthDate_From_AgeInMonths_LessThan12() { var checkDate = DateTime.Today.AddMonths(-1); _personAge = PersonAge.CreateFromMonths(1); var dob = Utils.CalculateBirthDate(_personAge); Assert.AreEqual(checkDate, dob); Console.WriteLine($"{_personAge} Born: {dob:yyyy MMMM dd}"); }
public void ImproveRatingFromAge_2() { Rating rating = new Rating(0.8); var ageRating = new AgeRating(PersonAge.FromYears(27), rating); var newRatingForAge = Phase1Evolution.Value.ImproveRatingFromAge(ageRating, Duration.FromMonths(1)); Assert.IsNotNull(newRatingForAge); Assert.AreEqual(Duration.FromMonths(27 * 12 + 1).Years, newRatingForAge.Age.Years); Assert.AreEqual(0.81, newRatingForAge.Rating.Value); }
public static ReadOnlyCollection <GenRange> Generate(BodyMassIndex bmi, PersonAge age) { var list = new List <GenRange>(); list.Add(new BmiRangeForPowerCalculator().Calculate(bmi, age)); list.Add(new BmiRangeForHeaderCalculator().Calculate(bmi, age)); list.Add(new BmiRangeForSpeedCalculator().Calculate(bmi, age)); list.Add(new BmiRangeForAccelerationCalculator().Calculate(bmi, age)); return(list.AsReadOnly()); }
public void CalculateBirthDate() { var personAge = PersonAge.Create(Age, SelectedAgeUnit.Value); try { BirthDate = SharedKernel.Custom.Utils.CalculateBirthDate(personAge); } catch (Exception ex) { } }
public Date Generate() { // retrieve game current date DateTime gameDate = _game.CurrentDate; // create a random player between 14 and 18 years old PersonAge age = _ageRandomiser.Randomise( PersonAge.FromDays(14 * 365), PersonAge.FromDays(18 * 365 + 1)); return(new Date(gameDate.AddDays(-age.Days))); }
public FeatureImprovementRatio GetImprovementFromAge(PersonAge age) { CheckRule(new PersonAgeMustBeWithinAgeRangeRule(age, AgeRange)); // recalculer l'abscisse pour que 0 <= x <= 1 double x = (age.Years - AgeRange.Lower.Years) / Duration.FromAgeRange(AgeRange).Years; // calculer y entre 0 et 1 double y = Math.Pow(x, EvolutionCurve.Value) * MaxFeatureImprovement.Value; return(new FeatureImprovementRatio(y)); }
public override GenRange Calculate(BodyMassIndex bmi, PersonAge age) { Range <Rating> rangeForHeader; if (bmi.Height >= _minimuHeightForMaxRange) { rangeForHeader = MaxRange; } else if (bmi.Height < _minimuHeightForMinRange) { rangeForHeader = MinRange; } else { rangeForHeader = MediumRange; } return(new GenRange(FeatureType.Header, rangeForHeader)); }
public AgeRating ImproveRatingFromAge(AgeRating currentAgeRating, Duration evolutionDuration) { if (currentAgeRating is null) { throw new ArgumentNullException(nameof(currentAgeRating)); } if (evolutionDuration is null) { throw new ArgumentNullException(nameof(evolutionDuration)); } // on ajoute la durée à l'âge du joueur (PersonAge + Duration = PersonAge) PersonAge futureAge = currentAgeRating.Age + evolutionDuration; FeatureImprovementRatio improvement = GetImprovementFromAge(futureAge) - GetImprovementFromAge(currentAgeRating.Age); return(new AgeRating(futureAge, improvement.ImproveRating(currentAgeRating.Rating))); }
public void should_Display_Full_AgeUnit() { _personAge = new PersonAge(10); var display = _personAge.ToFullAgeString(); Assert.That(display, Does.Contain("Years")); Console.WriteLine(_personAge.ToFullAgeString()); _personAge.Months = 2; display = _personAge.ToFullAgeString(); Assert.That(display, Does.Contain("Months")); Console.WriteLine(_personAge.ToFullAgeString()); _personAge.Days = 4; display = _personAge.ToFullAgeString(); Assert.That(display, Does.Contain("Days")); Console.WriteLine(_personAge.ToFullAgeString()); }
public BodyMassIndex Generate(Country country, Gender playerGender, Percentile percentile, Date dob) { // retrieve game current date DateTime gameDate = _game.CurrentDate; // get player age PersonAge playerAge = PersonAge.FromDate(dob, gameDate); playerAge = playerAge.AsRoundedYears(); // round the value to be able to filter on it. AbstractPercentileGrowthSet growthset = _percentileGrowthSetRepository.GetPercentileGrowthSet(playerGender); PercentileGrowth percentileGrowth = growthset.GetForPercentile(percentile); StatureForAge stature = percentileGrowth.GetStatureForAge(playerAge); WeightForAge weightForAge = percentileGrowth.GetWeightForAge(playerAge); return(new BodyMassIndex(stature.Stature, weightForAge.Mass)); }
public async Task <Player> GenerateAsync(Gender?playerGender = null, Country[] countries = null, PlayerPosition playerPosition = null) { if (playerGender == null) { playerGender = _genderGenerator.Generate(); } if (countries == null) { countries = _countriesGenerator.Generate().Value; } PersonName playerName = await _nameGenerator.GenerateAsync( playerGender.Value, countries.FirstOrDefault()); Date dob = _dobGenerator.Generate(); PersonAge playerAge = PersonAge.FromDate(dob, _game.CurrentDate); Location birthLocation = await _birthLocationGenerator.GenerateAsync(countries.FirstOrDefault()); Foot playerFoot = _favouriteFootGenerator.Generate(); Percentile percentile = _percentileGenerator.Generate(); BodyMassIndex bmi = _bmiGenerator.Generate(countries.FirstOrDefault(), playerGender.Value, percentile, dob); PlayerPosition position = _playerPositionGenerator.Generate(); PhysicalFeatureSet playerFeatureSet = _physicalFeatureSetGenerator.Generate(position, bmi, countries.FirstOrDefault(), playerAge); // first name & last name => according to the player's country return(new PlayerBuilder() .WithName(playerName) .WithGender(playerGender.Value) .WithBirthInfo(new BirthInfo(dob, birthLocation)) .WithFoot(playerFoot) .WithPercentile(percentile) .WithBodyMassIndex(bmi) .WithPlayerPosition(position) .WithFeatureSet(playerFeatureSet) .WithCountries(countries) .Build()); }
public PhysicalFeatureSet Generate(PlayerPosition position, BodyMassIndex bmi, Country country, PersonAge playerAge) { PlayerPositionGenerationRangeDefinition playerPositionGenRange = PlayerPositionGenerationRangeDefinition.GetFromPosition(position); ReadOnlyCollection <GenRange> positionGenRanges = playerPositionGenRange.GetGenerationRangeDefinitions(); ReadOnlyCollection <GenRange> bmiGenRanges = BodyMassIndexGenerationRangeDefinition.Generate(bmi, playerAge); // plages de génération différentes en fonction de // - la position du joueur // - du BMI // - du pays (à voir plus tard) // - [TODO] de l'âge du joueur PhysicalFeatureSet set = PhysicalFeatureSet.CreateFeatureSet(position.PositionCategory); Parallel.ForEach(set.PhysicalFeatures, feature => { // foreach (PhysicalFeature feature in set.PhysicalFeatures) //{ Rating rating; GenRange genRangeFromPosition = positionGenRanges.FirstOrDefault(c => c.FeatureType == feature.FeatureType); GenRange genRangeFromBmi = bmiGenRanges.FirstOrDefault(c => c.FeatureType == feature.FeatureType); if (genRangeFromBmi != null && genRangeFromPosition != null) { Range <Rating> range = Range <Rating> .MergeRanges(new Range <Rating>[] { genRangeFromBmi.RatingRange, genRangeFromPosition.RatingRange }); rating = _randomiser.Randomise(range); } else { if (genRangeFromPosition != null) { rating = _randomiser.Randomise(genRangeFromPosition.RatingRange); } else { //if (feature.FeatureType == FeatureType.Morale) //{ // rating = _randomiser.Randomise(); //} //else //{ rating = _randomiser.Randomise(_youngPlayerFeatureRatingRange); //} } } feature.ChangeRating(rating); //} }); return(set); }
public abstract GenRange Calculate(BodyMassIndex bmi, PersonAge age);
public StatureForAge GetStatureForAge(PersonAge age) => _staturesForAges.FirstOrDefault(sfa => sfa.Age.Equals(age));
public WeightForAge GetWeightForAge(PersonAge age) => _weightForAges.FirstOrDefault(wfa => wfa.Age.Equals(age));
public void SetUp() { _personAge = new PersonAge(50); }
public PersonAgeMustBeWithinAgeRangeRule(PersonAge age, Range <PersonAge> validRange) { _age = age; _validRange = validRange; }
public StatureForAge(int ageInYears, UnitsNet.Length stature) { Age = PersonAge.FromYears(ageInYears); Stature = stature; }
public static Phase1Evolution Create(EvolutionCurve evolutionCurve) => new Phase1Evolution(new Range <PersonAge>(PersonAge.FromYears(AGE_MIN), PersonAge.FromYears(AGE_MAX)), evolutionCurve);
public WeightForAge(int ageInYears, UnitsNet.Mass mass) { Age = PersonAge.FromYears(ageInYears); Mass = mass; }
public AgeRating(PersonAge age, Rating rating) { Age = age ?? throw new ArgumentNullException(nameof(age)); Rating = rating ?? throw new ArgumentNullException(nameof(rating)); }
public void Phase1Evolution_GetValue() { FeatureImprovementRatio improvement = Phase1Evolution.Value.GetImprovementFromAge(PersonAge.FromYears(16)); Assert.IsNotNull(improvement); Assert.AreEqual(0.01, improvement.Value); }
public void Phase1Evolution_ImproveRating4() { FeatureImprovementRatio improvement = Phase1Evolution.Value.GetImprovementFromAge(PersonAge.FromYears(28)); Rating rating = new Rating(0.7); var newRating = improvement.ImproveRating(rating); Assert.IsNotNull(newRating); Assert.AreEqual(0.99, newRating.Value); }
public void GetValue_Pass28_ShouldReturnValue() { FeatureImprovementRatio improvement = Phase1Evolution.Value.GetImprovementFromAge(PersonAge.FromYears(28)); Assert.IsNotNull(improvement); Assert.AreEqual(0.5, improvement.Value); }