Beispiel #1
0
        public void TrainCharacterForFiveYear(Character characterToTrain)
        {
            PersonalTrainer trainer = new PersonalTrainer(new ItemLinkFactory());

            trainer.OneMonthTrained += TrainerOnOneMonthTrained;

            trainer.TrainForXNumberOfYears(characterToTrain, 5);

            TrainingComplete?.Invoke(this, characterToTrain);
        }
        /// <summary>
        /// Trains a character for one year
        /// </summary>
        /// <param name="charactertoTrain"></param>
        /// <param name="characterArchetype"></param>
        /// <returns></returns>
        private static StatisticalResults TrainCharacterFor10Years(global::RNPC.Core.Character charactertoTrain, Archetype characterArchetype)
        {
            //ARRANGE
            var preTrainingQs             = charactertoTrain.MyTraits.GetPersonalQualitiesValues();
            int numberOfPretrainingValues = charactertoTrain.MyTraits.PersonalValues.Count;

            Stopwatch timer = new Stopwatch();

            timer.Start();

            PersonalTrainer trainer = new PersonalTrainer(new ItemLinkFactory());

            //ACT
            trainer.TrainForXNumberOfYears(charactertoTrain, 10);

            //ASSERT
            timer.Stop();

            int qualitiesModified = 0;
            int increaseDelta     = 0;
            int decreaseDelta     = 0;

            foreach (var quality in charactertoTrain.MyTraits.GetPersonalQualitiesValues())
            {
                if (quality.Value == preTrainingQs[quality.Key])
                {
                    continue;
                }

                qualitiesModified++;

                if (quality.Value > preTrainingQs[quality.Key])
                {
                    increaseDelta += quality.Value - preTrainingQs[quality.Key];
                }
                else
                {
                    decreaseDelta = preTrainingQs[quality.Key] - quality.Value;
                }
            }

            StatisticalResults results = new StatisticalResults
            {
                Archetype             = characterArchetype.ToString(),
                YearsofTraining       = 10,
                TrainingTime          = timer.ElapsedMilliseconds / 1000,
                ValuesAdded           = charactertoTrain.MyTraits.PersonalValues.Count - numberOfPretrainingValues,
                QualitiesModified     = qualitiesModified,
                QualityIncrease       = increaseDelta,
                QualityDecrease       = decreaseDelta,
                DecisionTreesModified = GetNumberOfRecentlyChangedDecisionTrees(charactertoTrain.MyName)
            };

            return(results);
        }