/// <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; } }
public int Result() { DifficultyPoints difficultyPoints = PenaltyPercentageToDifficultyPoints(); currentAttribute += Convert.ToInt32(difficultyPoints); int finalTestResult = OneAndTwentyBonus() + SkillBonus(); int testPoints = currentAttribute - DiceAfterSkillUse(); finalTestResult += ResultPoints(testPoints); return(finalTestResult); }