// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Audio; using osu.Framework.Bindables; using osu.Game.Rulesets.Osu.Judgements; using osu.Game.Rulesets.Scoring; namespace osu.Game.Rulesets.Osu.Objects.Drawables { public class DrawableSpinnerTick : DrawableOsuHitObject { private readonly BindableDouble bonusSampleVolume = new BindableDouble(); private bool hasBonusPoints; /// /// Whether this judgement has a bonus of 1,000 points additional to the numeric result. /// Set when a spin occured after the spinner has completed. /// public bool HasBonusPoints { get => hasBonusPoints; internal set { hasBonusPoints = value; bonusSampleVolume.Value = value ? 1 : 0; ((OsuSpinnerTickJudgement)Result.Judgement).HasBonusPoints = value; } } public override bool DisplayResult => false; public DrawableSpinnerTick(SpinnerTick spinnerTick) : base(spinnerTick) { } protected override void LoadComplete() { base.LoadComplete(); Samples.AddAdjustment(AdjustableProperty.Volume, bonusSampleVolume); } /// /// Apply a judgement result. /// /// Whether to apply a result, otherwise. internal void TriggerResult(bool hit) { HitObject.StartTime = Time.Current; ApplyResult(r => r.Type = hit ? HitResult.Great : HitResult.Miss); } } }