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 Percentile Generate() { var randomIntValue = _intRandomiser.Randomise ( Percentile.Min.Value, Percentile.Max.Value ); return(new Percentile(randomIntValue)); }
public Rating Randomise(Rating min, Rating max) { int minValue = Convert.ToInt32(Math.Round(min.Value * 100d, 0)); int maxValue = Convert.ToInt32(Math.Round(max.Value * 100d, 0)); int rnd = _intRandomiser.Randomise(minValue, maxValue); double value = Convert.ToDouble(rnd) / 100d; return(new Rating(value)); }
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))); }
private T GetRandomisedItemInternal <T>(List <T> list, Func <T, bool> filterPredicate = null) where T : class { if (list is null) { throw new ArgumentNullException(nameof(list)); } int nbOfItems = filterPredicate != null?list.Count(filterPredicate) : list.Count; int index = _intRandomiser.Randomise(0, nbOfItems); if (index >= nbOfItems) { index = nbOfItems - 1; } return(filterPredicate != null?list.Where(filterPredicate).ElementAt(index) : list.ElementAt(index)); }
public Maybe <Country[]> Generate() { var nbOfItemsToReturn = _intRandomiser.Randomise(1, 2); Country[] items = null; if (nbOfItemsToReturn > 1) { int[] indices = _multipleValuesRandomiser.GetRandomisedValues(new Range <int>(0, Country.Countries.Count - 1), nbOfItemsToReturn); items = indices .AsEnumerable() .Select(i => Country.Countries[i]) .ToArray(); } else { items = _listRandomiser.GetRandomisedItems(Country.Countries.ToList(), nbOfItemsToReturn); } return(Maybe.Some(items)); }
public Gender Generate() { return((Gender)_intRandomiser.Randomise(1, 2)); }
public PersonAge Randomise() => PersonAge.FromDays(_intRandomiser.Randomise(MinDays, MaxDays));