diff --git a/osu.Game.Rulesets.Osu/Mods/Objects/StrictTrackingDrawableSliderTail.cs b/osu.Game.Rulesets.Osu/Mods/Objects/StrictTrackingDrawableSliderTail.cs deleted file mode 100644 index 110b09f4f9..0000000000 --- a/osu.Game.Rulesets.Osu/Mods/Objects/StrictTrackingDrawableSliderTail.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using osu.Game.Rulesets.Osu.Objects.Drawables; - -namespace osu.Game.Rulesets.Osu.Mods.Objects -{ - public class StrictTrackingDrawableSliderTail : DrawableSliderTail - { - public override bool DisplayResult => true; - } -} diff --git a/osu.Game.Rulesets.Osu/Mods/Objects/StrictTrackingSlider.cs b/osu.Game.Rulesets.Osu/Mods/Objects/StrictTrackingSlider.cs deleted file mode 100644 index bf0a57d871..0000000000 --- a/osu.Game.Rulesets.Osu/Mods/Objects/StrictTrackingSlider.cs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using System.Threading; -using osu.Game.Rulesets.Objects; -using osu.Game.Rulesets.Objects.Types; -using osu.Game.Rulesets.Osu.Objects; - -namespace osu.Game.Rulesets.Osu.Mods.Objects -{ - public class StrictTrackingSlider : Slider - { - public StrictTrackingSlider(Slider original) - { - StartTime = original.StartTime; - Samples = original.Samples; - Path = original.Path; - NodeSamples = original.NodeSamples; - RepeatCount = original.RepeatCount; - Position = original.Position; - NewCombo = original.NewCombo; - ComboOffset = original.ComboOffset; - LegacyLastTickOffset = original.LegacyLastTickOffset; - TickDistanceMultiplier = original.TickDistanceMultiplier; - } - - protected override void CreateNestedHitObjects(CancellationToken cancellationToken) - { - var sliderEvents = SliderEventGenerator.Generate(StartTime, SpanDuration, Velocity, TickDistance, Path.Distance, this.SpanCount(), LegacyLastTickOffset, cancellationToken); - - foreach (var e in sliderEvents) - { - switch (e.Type) - { - case SliderEventType.Head: - AddNested(HeadCircle = new SliderHeadCircle - { - StartTime = e.Time, - Position = Position, - StackHeight = StackHeight, - }); - break; - - case SliderEventType.LegacyLastTick: - AddNested(TailCircle = new StrictTrackingSliderTailCircle(this) - { - RepeatIndex = e.SpanIndex, - StartTime = e.Time, - Position = EndPosition, - StackHeight = StackHeight - }); - break; - - case SliderEventType.Repeat: - AddNested(new SliderRepeat(this) - { - RepeatIndex = e.SpanIndex, - StartTime = StartTime + (e.SpanIndex + 1) * SpanDuration, - Position = Position + Path.PositionAt(e.PathProgress), - StackHeight = StackHeight, - Scale = Scale, - }); - break; - } - } - - UpdateNestedSamples(); - } - } -} diff --git a/osu.Game.Rulesets.Osu/Mods/Objects/StrictTrackingSliderTailCircle.cs b/osu.Game.Rulesets.Osu/Mods/Objects/StrictTrackingSliderTailCircle.cs deleted file mode 100644 index 7d93f2cf39..0000000000 --- a/osu.Game.Rulesets.Osu/Mods/Objects/StrictTrackingSliderTailCircle.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using osu.Game.Rulesets.Judgements; -using osu.Game.Rulesets.Osu.Judgements; -using osu.Game.Rulesets.Osu.Objects; - -namespace osu.Game.Rulesets.Osu.Mods.Objects -{ - public class StrictTrackingSliderTailCircle : SliderTailCircle - { - public StrictTrackingSliderTailCircle(Slider slider) - : base(slider) - { - } - - public override Judgement CreateJudgement() => new OsuJudgement(); - } -} diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModStrictTracking.cs b/osu.Game.Rulesets.Osu/Mods/OsuModStrictTracking.cs index b8d7134e5f..ee325db66a 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModStrictTracking.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModStrictTracking.cs @@ -3,12 +3,16 @@ using System; using System.Linq; +using System.Threading; using osu.Framework.Graphics.Sprites; using osu.Game.Beatmaps; +using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Drawables; +using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Osu.Beatmaps; -using osu.Game.Rulesets.Osu.Mods.Objects; +using osu.Game.Rulesets.Osu.Judgements; using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects.Drawables; using osu.Game.Rulesets.UI; @@ -65,5 +69,80 @@ namespace osu.Game.Rulesets.Osu.Mods { drawableRuleset.Playfield.RegisterPool(10, 100); } + + private class StrictTrackingSliderTailCircle : SliderTailCircle + { + public StrictTrackingSliderTailCircle(Slider slider) + : base(slider) + { + } + + public override Judgement CreateJudgement() => new OsuJudgement(); + } + + private class StrictTrackingDrawableSliderTail : DrawableSliderTail + { + public override bool DisplayResult => true; + } + + private class StrictTrackingSlider : Slider + { + public StrictTrackingSlider(Slider original) + { + StartTime = original.StartTime; + Samples = original.Samples; + Path = original.Path; + NodeSamples = original.NodeSamples; + RepeatCount = original.RepeatCount; + Position = original.Position; + NewCombo = original.NewCombo; + ComboOffset = original.ComboOffset; + LegacyLastTickOffset = original.LegacyLastTickOffset; + TickDistanceMultiplier = original.TickDistanceMultiplier; + } + + protected override void CreateNestedHitObjects(CancellationToken cancellationToken) + { + var sliderEvents = SliderEventGenerator.Generate(StartTime, SpanDuration, Velocity, TickDistance, Path.Distance, this.SpanCount(), LegacyLastTickOffset, cancellationToken); + + foreach (var e in sliderEvents) + { + switch (e.Type) + { + case SliderEventType.Head: + AddNested(HeadCircle = new SliderHeadCircle + { + StartTime = e.Time, + Position = Position, + StackHeight = StackHeight, + }); + break; + + case SliderEventType.LegacyLastTick: + AddNested(TailCircle = new StrictTrackingSliderTailCircle(this) + { + RepeatIndex = e.SpanIndex, + StartTime = e.Time, + Position = EndPosition, + StackHeight = StackHeight + }); + break; + + case SliderEventType.Repeat: + AddNested(new SliderRepeat(this) + { + RepeatIndex = e.SpanIndex, + StartTime = StartTime + (e.SpanIndex + 1) * SpanDuration, + Position = Position + Path.PositionAt(e.PathProgress), + StackHeight = StackHeight, + Scale = Scale, + }); + break; + } + } + + UpdateNestedSamples(); + } + } } }