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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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));
 }
Exemple #8
0
 public PersonAge Randomise()
 => PersonAge.FromDays(_intRandomiser.Randomise(MinDays, MaxDays));