private double AimingPoints(HitJudgement judgement) { switch (judgement) { case HitJudgement.Hit300: case HitJudgement.Hit100: case HitJudgement.Hit50: return(PointsForJudgement(HitJudgement.Hit300)); default: return(0); } }
private double PointsForJudgement(HitJudgement judgement) { switch (judgement) { case HitJudgement.Hit300: return(300); case HitJudgement.Hit100: return(100); case HitJudgement.Hit50: return(50); default: return(0); } }
public void ApplyHitJudgement(HitJudgement judgement) { ScoreObject currentObject = _remainingScoreObjects.FirstOrDefault(); if (currentObject == null) { return; } _remainingScoreObjects.RemoveAt(0); if (ScoreStyle == ScoreStyle.V1) { double hitValue = AimingPoints(judgement) * currentObject.AimingDifficulty + ClickingPoints(judgement) * currentObject.ClickingDifficulty + ReadingPoints(judgement) * currentObject.ReadingDifficulty; // Mods multiplier is considered in difficulty multiplier Score += hitValue + hitValue * Combo / 100; } else if (ScoreStyle == ScoreStyle.V2) { // aim => scales with hitrate (perhaps scale with max combo too?) // click => scales with acc // read => scales with acc _aimingPoints += AimingPoints(judgement) * currentObject.AimingDifficulty; _maxAimingPoints += AimingPoints(HitJudgement.Hit300) * currentObject.AimingDifficulty; _clickingPoints += ClickingPoints(judgement) * currentObject.ClickingDifficulty; _maxClickingPoints += ClickingPoints(HitJudgement.Hit300) * currentObject.ClickingDifficulty; _readingPoints += ReadingPoints(judgement) * currentObject.ReadingDifficulty; _maxReadingPoints += ReadingPoints(HitJudgement.Hit300) * currentObject.ReadingDifficulty; // where aim, click and read are portions max possible performance Score = MaxScore * ((_aimingPoints / _maxAimingPoints) * AimingWeight + (_clickingPoints / _maxClickingPoints) * ClickingWeight + (_readingPoints / _maxReadingPoints) * ReadingWeight); } Combo++; MaxCombo++; }
private double ReadingPoints(HitJudgement judgement) { return(PointsForJudgement(judgement)); }