mirror of https://github.com/ppy/osu
60 lines
2.3 KiB
C#
60 lines
2.3 KiB
C#
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
// See the LICENCE file in the repository root for full licence text.
|
|
|
|
#nullable disable
|
|
|
|
using osu.Game.Rulesets.Judgements;
|
|
using osu.Game.Rulesets.Objects;
|
|
using osu.Game.Rulesets.Osu.Objects;
|
|
|
|
namespace osu.Game.Rulesets.Osu.Judgements
|
|
{
|
|
public class OsuSpinnerJudgementResult : OsuJudgementResult
|
|
{
|
|
/// <summary>
|
|
/// The <see cref="Spinner"/>.
|
|
/// </summary>
|
|
public Spinner Spinner => (Spinner)HitObject;
|
|
|
|
/// <summary>
|
|
/// The total rotation performed on the spinner disc, disregarding the spin direction,
|
|
/// adjusted for the track's playback rate.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// <para>
|
|
/// This value is always non-negative and is monotonically increasing with time
|
|
/// (i.e. will only increase if time is passing forward, but can decrease during rewind).
|
|
/// </para>
|
|
/// <para>
|
|
/// The rotation from each frame is multiplied by the clock's current playback rate.
|
|
/// The reason this is done is to ensure that spinners give the same score and require the same number of spins
|
|
/// regardless of whether speed-modifying mods are applied.
|
|
/// </para>
|
|
/// </remarks>
|
|
/// <example>
|
|
/// Assuming no speed-modifying mods are active,
|
|
/// if the spinner is spun 360 degrees clockwise and then 360 degrees counter-clockwise,
|
|
/// this property will return the value of 720 (as opposed to 0).
|
|
/// If Double Time is active instead (with a speed multiplier of 1.5x),
|
|
/// in the same scenario the property will return 720 * 1.5 = 1080.
|
|
/// </example>
|
|
public float RateAdjustedRotation;
|
|
|
|
/// <summary>
|
|
/// Time instant at which the spin was started (the first user input which caused an increase in spin).
|
|
/// </summary>
|
|
public double? TimeStarted;
|
|
|
|
/// <summary>
|
|
/// Time instant at which the spinner has been completed (the user has executed all required spins).
|
|
/// Will be null if all required spins haven't been completed.
|
|
/// </summary>
|
|
public double? TimeCompleted;
|
|
|
|
public OsuSpinnerJudgementResult(HitObject hitObject, Judgement judgement)
|
|
: base(hitObject, judgement)
|
|
{
|
|
}
|
|
}
|
|
}
|