/// <summary>
        /// Calculates difficulty of current <see cref="Beatmap"/> with <see cref="Mods"/> set
        /// </summary>
        public void CalculateDifficulty()
        {
            // Check for beatmap
            if (Beatmap == null)
            {
                return;
            }

            // Reset skills
            Reset();

            // Process HitObjects
            foreach (var hitObject in Beatmap.HitObjects)
            {
                var difficultyPoint = new DifficultyPoint(hitObject);

                foreach (var skill in Skills)
                {
                    if (skill.ProcessHitObject(HitObjectWithMods(difficultyPoint.BaseHitObject, Mods)))
                    {
                        skill.DataPoints = new Dictionary <string, double>();
                        difficultyPoint.SkillDatas.Add(new SkillData
                        {
                            SkillType  = skill.GetType(),
                            Difficulty = skill.CalculateDifficulty(),
                            DataPoints = skill.DataPoints
                        });
                    }
                }

                DifficultyPoints.Add(difficultyPoint);
            }
        }
 /// <summary>
 /// Clears <see cref="Skills"/> of calculation data
 /// </summary>
 public void Reset()
 {
     DifficultyPoints.Clear();
     foreach (var skill in Skills)
     {
         skill.Reset();
         skill.DataPoints = null;
     }
 }
Esempio n. 3
0
        public int Result()
        {
            DifficultyPoints difficultyPoints = PenaltyPercentageToDifficultyPoints();

            currentAttribute += Convert.ToInt32(difficultyPoints);
            int finalTestResult = OneAndTwentyBonus() + SkillBonus();
            int testPoints      = currentAttribute - DiceAfterSkillUse();

            finalTestResult += ResultPoints(testPoints);
            return(finalTestResult);
        }