diff --git a/osu.Game.Rulesets.Osu/Judgements/OsuHitCircleJudgementResult.cs b/osu.Game.Rulesets.Osu/Judgements/OsuHitCircleJudgementResult.cs
index 103d02958d..9b33e746b3 100644
--- a/osu.Game.Rulesets.Osu/Judgements/OsuHitCircleJudgementResult.cs
+++ b/osu.Game.Rulesets.Osu/Judgements/OsuHitCircleJudgementResult.cs
@@ -10,10 +10,15 @@ namespace osu.Game.Rulesets.Osu.Judgements
{
public class OsuHitCircleJudgementResult : OsuJudgementResult
{
+ ///
+ /// The .
+ ///
public HitCircle HitCircle => (HitCircle)HitObject;
- public Vector2? HitPosition;
- public float? Radius;
+ ///
+ /// The position of the player's cursor when was hit.
+ ///
+ public Vector2? CursorPositionAtHit;
public OsuHitCircleJudgementResult(HitObject hitObject, Judgement judgement)
: base(hitObject, judgement)
diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs
index 2f86400b25..854fc4c91c 100644
--- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs
@@ -142,11 +142,11 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
{
var circleResult = (OsuHitCircleJudgementResult)r;
+ // Todo: This should also consider misses, but they're a little more interesting to handle, since we don't necessarily know the position at the time of a miss.
if (result != HitResult.Miss)
{
var localMousePosition = ToLocalSpace(inputManager.CurrentState.Mouse.Position);
- circleResult.HitPosition = HitObject.StackedPosition + (localMousePosition - DrawSize / 2);
- circleResult.Radius = (float)HitObject.Radius;
+ circleResult.CursorPositionAtHit = HitObject.StackedPosition + (localMousePosition - DrawSize / 2);
}
circleResult.Type = result;
diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs
index c7003deed2..45980cb3d5 100644
--- a/osu.Game.Rulesets.Osu/OsuRuleset.cs
+++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs
@@ -29,7 +29,6 @@ using osu.Game.Rulesets.Scoring;
using osu.Game.Scoring;
using osu.Game.Skinning;
using System;
-using System.Linq;
using osu.Framework.Graphics.Containers;
using osu.Game.Rulesets.Osu.Statistics;
using osu.Game.Screens.Ranking.Statistics;
@@ -201,7 +200,7 @@ namespace osu.Game.Rulesets.Osu
{
RelativeSizeAxes = Axes.X,
Height = 130,
- Child = new TimingDistributionGraph(score.HitEvents.Cast().ToList())
+ Child = new TimingDistributionGraph(score)
{
RelativeSizeAxes = Axes.Both
}
@@ -209,7 +208,7 @@ namespace osu.Game.Rulesets.Osu
new StatisticContainer("Accuracy Heatmap")
{
RelativeSizeAxes = Axes.Both,
- Child = new Heatmap(score.Beatmap, score.HitEvents.Cast().ToList())
+ Child = new Heatmap(score)
{
RelativeSizeAxes = Axes.Both
}
diff --git a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs
index 0a9ce83912..231a24cac5 100644
--- a/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs
+++ b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs
@@ -1,54 +1,16 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
-using System.Collections.Generic;
-using System.Linq;
-using JetBrains.Annotations;
using osu.Game.Rulesets.Judgements;
using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Osu.Judgements;
using osu.Game.Rulesets.Osu.Objects;
using osu.Game.Rulesets.Scoring;
-using osu.Game.Scoring;
-using osuTK;
namespace osu.Game.Rulesets.Osu.Scoring
{
public class OsuScoreProcessor : ScoreProcessor
{
- private readonly List hitEvents = new List();
- private HitObject lastHitObject;
-
- protected override void OnResultApplied(JudgementResult result)
- {
- base.OnResultApplied(result);
-
- hitEvents.Add(new HitEvent(result.TimeOffset, result.Type, result.HitObject, lastHitObject, (result as OsuHitCircleJudgementResult)?.HitPosition));
- lastHitObject = result.HitObject;
- }
-
- protected override void OnResultReverted(JudgementResult result)
- {
- base.OnResultReverted(result);
-
- hitEvents.RemoveAt(hitEvents.Count - 1);
- }
-
- protected override void Reset(bool storeResults)
- {
- base.Reset(storeResults);
-
- hitEvents.Clear();
- lastHitObject = null;
- }
-
- public override void PopulateScore(ScoreInfo score)
- {
- base.PopulateScore(score);
-
- score.HitEvents.AddRange(hitEvents.Select(e => e).Cast