diff --git a/osu.Desktop.Tests/Visual/TestCaseScrollingPlayfield.cs b/osu.Desktop.Tests/Visual/TestCaseScrollingPlayfield.cs index a431531427..fc8f70b7ce 100644 --- a/osu.Desktop.Tests/Visual/TestCaseScrollingPlayfield.cs +++ b/osu.Desktop.Tests/Visual/TestCaseScrollingPlayfield.cs @@ -72,7 +72,7 @@ namespace osu.Desktop.Tests.Visual [Test] public void TestSpeedAdjustmentOrdering() { - var hitObjectContainer = new ScrollingPlayfield.ScrollingHitObjectContainer(Axes.X); + var hitObjectContainer = new ScrollingPlayfield.ScrollingHitObjectContainer(Axes.X); var speedAdjustments = new[] { @@ -147,7 +147,7 @@ namespace osu.Desktop.Tests.Visual protected override BeatmapConverter CreateBeatmapConverter() => new TestBeatmapConverter(); - protected override Playfield CreatePlayfield() => new TestPlayfield(scrollingAxes); + protected override Playfield CreatePlayfield() => new TestPlayfield(scrollingAxes); protected override DrawableHitObject GetVisualRepresentation(TestHitObject h) => new DrawableTestHitObject(scrollingAxes, h); } @@ -190,7 +190,7 @@ namespace osu.Desktop.Tests.Visual } } - private class TestPlayfield : ScrollingPlayfield + private class TestPlayfield : ScrollingPlayfield { protected override Container Content => content; private readonly Container content; diff --git a/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs index 13eb49698b..d653bc92e6 100644 --- a/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs +++ b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs @@ -12,7 +12,7 @@ using osu.Game.Rulesets.Objects.Drawables; namespace osu.Game.Rulesets.Catch.UI { - public class CatchPlayfield : ScrollingPlayfield + public class CatchPlayfield : ScrollingPlayfield { protected override Container Content => content; private readonly Container content; @@ -44,7 +44,7 @@ namespace osu.Game.Rulesets.Catch.UI }; } - public override void Add(DrawableHitObject h) + public override void Add(DrawableHitObject h) { base.Add(h); diff --git a/osu.Game.Rulesets.Catch/UI/CatchRulesetContainer.cs b/osu.Game.Rulesets.Catch/UI/CatchRulesetContainer.cs index eb7abf9248..8f332bdcbf 100644 --- a/osu.Game.Rulesets.Catch/UI/CatchRulesetContainer.cs +++ b/osu.Game.Rulesets.Catch/UI/CatchRulesetContainer.cs @@ -25,7 +25,7 @@ namespace osu.Game.Rulesets.Catch.UI protected override BeatmapConverter CreateBeatmapConverter() => new CatchBeatmapConverter(); - protected override Playfield CreatePlayfield() => new CatchPlayfield(); + protected override Playfield CreatePlayfield() => new CatchPlayfield(); public override PassThroughInputManager CreateInputManager() => new CatchInputManager(Ruleset.RulesetInfo); diff --git a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs index ac1f45a2ab..64dbe04ba4 100644 --- a/osu.Game.Rulesets.Catch/UI/CatcherArea.cs +++ b/osu.Game.Rulesets.Catch/UI/CatcherArea.cs @@ -160,7 +160,6 @@ namespace osu.Game.Rulesets.Catch.UI fruit.Origin = Anchor.BottomCentre; fruit.Scale *= 0.7f; fruit.LifetimeEnd = double.MaxValue; - fruit.Depth = (float)Time.Current; float distance = fruit.DrawSize.X / 2 * fruit.Scale.X; diff --git a/osu.Game.Rulesets.Mania/UI/Column.cs b/osu.Game.Rulesets.Mania/UI/Column.cs index bbd4dea471..6a240081c8 100644 --- a/osu.Game.Rulesets.Mania/UI/Column.cs +++ b/osu.Game.Rulesets.Mania/UI/Column.cs @@ -18,7 +18,7 @@ using osu.Game.Rulesets.Judgements; namespace osu.Game.Rulesets.Mania.UI { - public class Column : ScrollingPlayfield, IHasAccentColour + public class Column : ScrollingPlayfield, IHasAccentColour { private const float key_icon_size = 10; private const float key_icon_corner_radius = 3; @@ -199,7 +199,7 @@ namespace osu.Game.Rulesets.Mania.UI /// Adds a DrawableHitObject to this Playfield. /// /// The DrawableHitObject to add. - public override void Add(DrawableHitObject hitObject) + public override void Add(DrawableHitObject hitObject) { hitObject.AccentColour = AccentColour; HitObjects.Add(hitObject); diff --git a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs index 3c37f334bd..6c164a34f0 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs @@ -20,7 +20,7 @@ using osu.Game.Rulesets.Judgements; namespace osu.Game.Rulesets.Mania.UI { - public class ManiaPlayfield : ScrollingPlayfield + public class ManiaPlayfield : ScrollingPlayfield { public const float HIT_TARGET_POSITION = 50; @@ -224,7 +224,8 @@ namespace osu.Game.Rulesets.Mania.UI } } - public override void Add(DrawableHitObject h) => Columns.ElementAt(h.HitObject.Column).Add(h); + public override void Add(DrawableHitObject h) => Columns.ElementAt(((ManiaHitObject)h.HitObject).Column).Add(h); + public void Add(DrawableBarLine barline) => HitObjects.Add(barline); protected override void Update() diff --git a/osu.Game.Rulesets.Mania/UI/ManiaRulesetContainer.cs b/osu.Game.Rulesets.Mania/UI/ManiaRulesetContainer.cs index 49e53a07c9..985d9fbfe2 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaRulesetContainer.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaRulesetContainer.cs @@ -74,7 +74,7 @@ namespace osu.Game.Rulesets.Mania.UI BarLines.ForEach(Playfield.Add); } - protected sealed override Playfield CreatePlayfield() => new ManiaPlayfield(availableColumns) + protected sealed override Playfield CreatePlayfield() => new ManiaPlayfield(availableColumns) { Anchor = Anchor.Centre, Origin = Anchor.Centre, diff --git a/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs index e9d9e0e3de..17f4f9f541 100644 --- a/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs +++ b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs @@ -16,7 +16,7 @@ using osu.Game.Rulesets.Osu.UI.Cursor; namespace osu.Game.Rulesets.Osu.UI { - public class OsuPlayfield : Playfield + public class OsuPlayfield : Playfield { private readonly Container approachCircles; private readonly Container judgementLayer; @@ -68,10 +68,8 @@ namespace osu.Game.Rulesets.Osu.UI AddInternal(new GameplayCursor()); } - public override void Add(DrawableHitObject h) + public override void Add(DrawableHitObject h) { - h.Depth = (float)h.HitObject.StartTime; - var c = h as IDrawableHitObjectWithProxiedApproach; if (c != null) approachCircles.Add(c.ProxiedLayer.CreateProxy()); diff --git a/osu.Game.Rulesets.Osu/UI/OsuRulesetContainer.cs b/osu.Game.Rulesets.Osu/UI/OsuRulesetContainer.cs index edf7e014a3..668a440c4a 100644 --- a/osu.Game.Rulesets.Osu/UI/OsuRulesetContainer.cs +++ b/osu.Game.Rulesets.Osu/UI/OsuRulesetContainer.cs @@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Osu.UI protected override BeatmapProcessor CreateBeatmapProcessor() => new OsuBeatmapProcessor(); - protected override Playfield CreatePlayfield() => new OsuPlayfield(); + protected override Playfield CreatePlayfield() => new OsuPlayfield(); public override PassThroughInputManager CreateInputManager() => new OsuInputManager(Ruleset.RulesetInfo); diff --git a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs index 373f9f9b7f..52b3301bc7 100644 --- a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs +++ b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs @@ -19,7 +19,7 @@ using osu.Game.Rulesets.Taiko.Objects.Drawables; namespace osu.Game.Rulesets.Taiko.UI { - public class TaikoPlayfield : ScrollingPlayfield + public class TaikoPlayfield : ScrollingPlayfield { /// /// Default height of a when inside a . @@ -203,10 +203,8 @@ namespace osu.Game.Rulesets.Taiko.UI background.Colour = colours.Gray0; } - public override void Add(DrawableHitObject h) + public override void Add(DrawableHitObject h) { - h.Depth = (float)h.HitObject.StartTime; - base.Add(h); var barline = h as DrawableBarLine; diff --git a/osu.Game.Rulesets.Taiko/UI/TaikoRulesetContainer.cs b/osu.Game.Rulesets.Taiko/UI/TaikoRulesetContainer.cs index ccb6531b00..4e7b676fbc 100644 --- a/osu.Game.Rulesets.Taiko/UI/TaikoRulesetContainer.cs +++ b/osu.Game.Rulesets.Taiko/UI/TaikoRulesetContainer.cs @@ -94,7 +94,7 @@ namespace osu.Game.Rulesets.Taiko.UI public override PassThroughInputManager CreateInputManager() => new TaikoInputManager(Ruleset.RulesetInfo); - protected override Playfield CreatePlayfield() => new TaikoPlayfield + protected override Playfield CreatePlayfield() => new TaikoPlayfield { Anchor = Anchor.CentreLeft, Origin = Anchor.CentreLeft diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index e72d0dd142..c008d25083 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -55,6 +55,8 @@ namespace osu.Game.Rulesets.Objects.Drawables : base(hitObject) { HitObject = hitObject; + + Depth = (float)hitObject.StartTime; } private ArmedState state; diff --git a/osu.Game/Rulesets/UI/Playfield.cs b/osu.Game/Rulesets/UI/Playfield.cs index ce800b76b1..d8cfe3007d 100644 --- a/osu.Game/Rulesets/UI/Playfield.cs +++ b/osu.Game/Rulesets/UI/Playfield.cs @@ -14,8 +14,7 @@ using System.Linq; namespace osu.Game.Rulesets.UI { - public abstract class Playfield : Container - where TObject : HitObject + public abstract class Playfield : Container { /// /// The HitObjects contained in this Playfield. @@ -69,7 +68,7 @@ namespace osu.Game.Rulesets.UI public override Axes RelativeSizeAxes { get { return Axes.Both; } - set { throw new InvalidOperationException($@"{nameof(Playfield)}'s {nameof(RelativeSizeAxes)} should never be changed from {Axes.Both}"); } + set { throw new InvalidOperationException($@"{nameof(Playfield)}'s {nameof(RelativeSizeAxes)} should never be changed from {Axes.Both}"); } } /// @@ -81,13 +80,13 @@ namespace osu.Game.Rulesets.UI /// Adds a DrawableHitObject to this Playfield. /// /// The DrawableHitObject to add. - public virtual void Add(DrawableHitObject h) => HitObjects.Add(h); + public virtual void Add(DrawableHitObject h) => HitObjects.Add(h); /// /// Remove a DrawableHitObject from this Playfield. /// /// The DrawableHitObject to remove. - public virtual void Remove(DrawableHitObject h) => HitObjects.Remove(h); + public virtual void Remove(DrawableHitObject h) => HitObjects.Remove(h); /// /// Triggered when a new occurs on a . diff --git a/osu.Game/Rulesets/UI/RulesetContainer.cs b/osu.Game/Rulesets/UI/RulesetContainer.cs index cae211fb9c..9377d64028 100644 --- a/osu.Game/Rulesets/UI/RulesetContainer.cs +++ b/osu.Game/Rulesets/UI/RulesetContainer.cs @@ -157,7 +157,7 @@ namespace osu.Game.Rulesets.UI /// /// The playfield. /// - public Playfield Playfield { get; private set; } + public Playfield Playfield { get; private set; } protected override Container Content => content; private Container content; @@ -310,7 +310,7 @@ namespace osu.Game.Rulesets.UI /// Creates a Playfield. /// /// The Playfield. - protected abstract Playfield CreatePlayfield(); + protected abstract Playfield CreatePlayfield(); } /// @@ -320,7 +320,7 @@ namespace osu.Game.Rulesets.UI /// The type of HitObject contained by this RulesetContainer. public abstract class RulesetContainer : RulesetContainer where TObject : HitObject - where TPlayfield : Playfield + where TPlayfield : Playfield { /// /// The playfield. diff --git a/osu.Game/Rulesets/UI/ScrollingPlayfield.cs b/osu.Game/Rulesets/UI/ScrollingPlayfield.cs index 2162d650db..748b26291b 100644 --- a/osu.Game/Rulesets/UI/ScrollingPlayfield.cs +++ b/osu.Game/Rulesets/UI/ScrollingPlayfield.cs @@ -20,8 +20,7 @@ namespace osu.Game.Rulesets.UI /// /// A type of specialized towards scrolling s. /// - public class ScrollingPlayfield : Playfield - where TObject : HitObject + public class ScrollingPlayfield : Playfield { /// /// The default span of time visible by the length of the scrolling axes. @@ -75,21 +74,21 @@ namespace osu.Game.Rulesets.UI HitObjects.Reversed.BindTo(Reversed); } - private List> nestedPlayfields; + private List nestedPlayfields; /// /// All the s nested inside this playfield. /// - public IEnumerable> NestedPlayfields => nestedPlayfields; + public IEnumerable NestedPlayfields => nestedPlayfields; /// /// Adds a to this playfield. The nested /// will be given all of the same speed adjustments as this playfield. /// /// The to add. - protected void AddNested(ScrollingPlayfield otherPlayfield) + protected void AddNested(ScrollingPlayfield otherPlayfield) { if (nestedPlayfields == null) - nestedPlayfields = new List>(); + nestedPlayfields = new List(); nestedPlayfields.Add(otherPlayfield); } @@ -117,7 +116,7 @@ namespace osu.Game.Rulesets.UI this.TransformTo(this.PopulateTransform(new TransformVisibleTimeRange(), newTimeRange, duration, easing)); } - private class TransformVisibleTimeRange : Transform> + private class TransformVisibleTimeRange : Transform { private double valueAt(double time) { @@ -129,8 +128,8 @@ namespace osu.Game.Rulesets.UI public override string TargetMember => "VisibleTimeRange.Value"; - protected override void Apply(ScrollingPlayfield d, double time) => d.VisibleTimeRange.Value = valueAt(time); - protected override void ReadIntoStartValue(ScrollingPlayfield d) => StartValue = d.VisibleTimeRange.Value; + protected override void Apply(ScrollingPlayfield d, double time) => d.VisibleTimeRange.Value = valueAt(time); + protected override void ReadIntoStartValue(ScrollingPlayfield d) => StartValue = d.VisibleTimeRange.Value; } /// diff --git a/osu.Game/Rulesets/UI/ScrollingRulesetContainer.cs b/osu.Game/Rulesets/UI/ScrollingRulesetContainer.cs index c199c90f4a..2fd75d62cb 100644 --- a/osu.Game/Rulesets/UI/ScrollingRulesetContainer.cs +++ b/osu.Game/Rulesets/UI/ScrollingRulesetContainer.cs @@ -21,7 +21,7 @@ namespace osu.Game.Rulesets.UI /// public abstract class ScrollingRulesetContainer : RulesetContainer where TObject : HitObject - where TPlayfield : ScrollingPlayfield + where TPlayfield : ScrollingPlayfield { /// /// Provides the default s that adjust the scrolling rate of s @@ -86,7 +86,7 @@ namespace osu.Game.Rulesets.UI DefaultControlPoints.ForEach(c => applySpeedAdjustment(c, Playfield)); } - private void applySpeedAdjustment(MultiplierControlPoint controlPoint, ScrollingPlayfield playfield) + private void applySpeedAdjustment(MultiplierControlPoint controlPoint, ScrollingPlayfield playfield) { playfield.HitObjects.AddSpeedAdjustment(CreateSpeedAdjustmentContainer(controlPoint)); playfield.NestedPlayfields.ForEach(p => applySpeedAdjustment(controlPoint, p));