From 55f238f6a952eae5f50d19d41f8e279f046d53b8 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Thu, 8 Jun 2017 23:40:24 +0900 Subject: [PATCH] Remove IHasTimeSpan, add rename to TimingSection. --- .../Tests/TestCaseManiaPlayfield.cs | 6 +++--- .../Mods/ManiaModGravity.cs | 10 +++++----- .../DrawableManiaGravityTimingChange.cs | 2 +- .../DrawableManiaScrollingTimingChange.cs | 2 +- .../Drawables/DrawableManiaTimingChange.cs | 6 +++--- osu.Game.Rulesets.Mania/UI/Column.cs | 6 +++--- osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs | 12 ++++++------ osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs | 6 +++--- ...imingChange.cs => DrawableTimingSection.cs} | 14 ++++++++------ osu.Game/Rulesets/Timing/IHasTimeSpan.cs | 18 ------------------ .../{TimingChange.cs => TimingSection.cs} | 2 +- ...Container.cs => TimingSectionCollection.cs} | 8 ++++---- osu.Game/osu.Game.csproj | 7 +++---- 13 files changed, 41 insertions(+), 58 deletions(-) rename osu.Game/Rulesets/Timing/Drawables/{DrawableTimingChange.cs => DrawableTimingSection.cs} (89%) delete mode 100644 osu.Game/Rulesets/Timing/IHasTimeSpan.cs rename osu.Game/Rulesets/Timing/{TimingChange.cs => TimingSection.cs} (91%) rename osu.Game/Rulesets/Timing/{TimingChangeContainer.cs => TimingSectionCollection.cs} (84%) diff --git a/osu.Desktop.VisualTests/Tests/TestCaseManiaPlayfield.cs b/osu.Desktop.VisualTests/Tests/TestCaseManiaPlayfield.cs index 95633020fe..6531851c17 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseManiaPlayfield.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseManiaPlayfield.cs @@ -45,18 +45,18 @@ namespace osu.Desktop.VisualTests.Tests const double start_time = 500; const double duration = 500; - Func createTimingChange = (time, gravity) => + Func createTimingChange = (time, gravity) => { if (gravity) { - return new DrawableManiaGravityTimingChange(new TimingChange + return new DrawableManiaGravityTimingChange(new TimingSection { BeatLength = 1000, Time = time }); } - return new DrawableManiaScrollingTimingChange(new TimingChange + return new DrawableManiaScrollingTimingChange(new TimingSection { BeatLength = 1000, Time = time diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModGravity.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModGravity.cs index 8db5f40574..bfd9ffbe87 100644 --- a/osu.Game.Rulesets.Mania/Mods/ManiaModGravity.cs +++ b/osu.Game.Rulesets.Mania/Mods/ManiaModGravity.cs @@ -31,11 +31,11 @@ namespace osu.Game.Rulesets.Mania.Mods { var maniaHitRenderer = (ManiaHitRenderer)hitRenderer; - maniaHitRenderer.HitObjectTimingChanges = new List[maniaHitRenderer.PreferredColumns]; - maniaHitRenderer.BarlineTimingChanges = new List(); + maniaHitRenderer.HitObjectTimingChanges = new List[maniaHitRenderer.PreferredColumns]; + maniaHitRenderer.BarlineTimingChanges = new List(); for (int i = 0; i < maniaHitRenderer.PreferredColumns; i++) - maniaHitRenderer.HitObjectTimingChanges[i] = new List(); + maniaHitRenderer.HitObjectTimingChanges[i] = new List(); foreach (HitObject obj in maniaHitRenderer.Objects) { @@ -43,7 +43,7 @@ namespace osu.Game.Rulesets.Mania.Mods if (maniaObject == null) continue; - maniaHitRenderer.HitObjectTimingChanges[maniaObject.Column].Add(new DrawableManiaGravityTimingChange(new TimingChange + maniaHitRenderer.HitObjectTimingChanges[maniaObject.Column].Add(new DrawableManiaGravityTimingChange(new TimingSection { Time = obj.StartTime, BeatLength = 1000 @@ -62,7 +62,7 @@ namespace osu.Game.Rulesets.Mania.Mods for (double t = timingPoints[i].Time; Precision.DefinitelyBigger(endTime, t); t += point.BeatLength) { - maniaHitRenderer.BarlineTimingChanges.Add(new DrawableManiaGravityTimingChange(new TimingChange + maniaHitRenderer.BarlineTimingChanges.Add(new DrawableManiaGravityTimingChange(new TimingSection { Time = t, BeatLength = 1000 diff --git a/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaGravityTimingChange.cs b/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaGravityTimingChange.cs index aa2145ef94..d08682a171 100644 --- a/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaGravityTimingChange.cs +++ b/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaGravityTimingChange.cs @@ -10,7 +10,7 @@ namespace osu.Game.Rulesets.Mania.Timing.Drawables /// public class DrawableManiaGravityTimingChange : DrawableManiaTimingChange { - public DrawableManiaGravityTimingChange(TimingChange timingChange) + public DrawableManiaGravityTimingChange(TimingSection timingChange) : base(timingChange) { } diff --git a/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaScrollingTimingChange.cs b/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaScrollingTimingChange.cs index 10b5e4dc60..4f4d8825ed 100644 --- a/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaScrollingTimingChange.cs +++ b/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaScrollingTimingChange.cs @@ -10,7 +10,7 @@ namespace osu.Game.Rulesets.Mania.Timing.Drawables /// public class DrawableManiaScrollingTimingChange : DrawableManiaTimingChange { - public DrawableManiaScrollingTimingChange(TimingChange timingChange) + public DrawableManiaScrollingTimingChange(TimingSection timingChange) : base(timingChange) { } diff --git a/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaTimingChange.cs b/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaTimingChange.cs index 44ceaa467d..3aed4264bf 100644 --- a/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaTimingChange.cs +++ b/osu.Game.Rulesets.Mania/Timing/Drawables/DrawableManiaTimingChange.cs @@ -7,9 +7,9 @@ using osu.Game.Rulesets.Timing.Drawables; namespace osu.Game.Rulesets.Mania.Timing.Drawables { - public abstract class DrawableManiaTimingChange : DrawableTimingChange + public abstract class DrawableManiaTimingChange : DrawableTimingSection { - protected DrawableManiaTimingChange(TimingChange timingChange) + protected DrawableManiaTimingChange(TimingSection timingChange) : base(timingChange, Axes.Y) { } @@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Mania.Timing.Drawables { base.UpdateAfterChildren(); - var parent = Parent as IHasTimeSpan; + var parent = Parent as TimingSectionCollection; if (parent == null) return; diff --git a/osu.Game.Rulesets.Mania/UI/Column.cs b/osu.Game.Rulesets.Mania/UI/Column.cs index fc86295df7..5407bdadb6 100644 --- a/osu.Game.Rulesets.Mania/UI/Column.cs +++ b/osu.Game.Rulesets.Mania/UI/Column.cs @@ -40,7 +40,7 @@ namespace osu.Game.Rulesets.Mania.UI private readonly Container hitTargetBar; private readonly Container keyIcon; - private readonly TimingChangeContainer timingChanges; + private readonly TimingSectionCollection timingChanges; public Column() { @@ -91,7 +91,7 @@ namespace osu.Game.Rulesets.Mania.UI } } }, - timingChanges = new TimingChangeContainer + timingChanges = new TimingSectionCollection { Name = "Hit objects", RelativeSizeAxes = Axes.Both, @@ -191,7 +191,7 @@ namespace osu.Game.Rulesets.Mania.UI set { timingChanges.TimeSpan = value; } } - public void Add(DrawableTimingChange timingChange) => timingChanges.Add(timingChange); + public void Add(DrawableTimingSection timingChange) => timingChanges.Add(timingChange); public void Add(DrawableHitObject hitObject) { hitObject.AccentColour = AccentColour; diff --git a/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs b/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs index e69802f784..3e266ea7af 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs @@ -40,12 +40,12 @@ namespace osu.Game.Rulesets.Mania.UI /// /// Per-column timing changes. /// - public List[] HitObjectTimingChanges; + public List[] HitObjectTimingChanges; /// /// Bar line timing changes. /// - public List BarlineTimingChanges; + public List BarlineTimingChanges; /// /// Number of columns in the playfield of this hit renderer. Null if the play field hasn't been generated yet. @@ -65,11 +65,11 @@ namespace osu.Game.Rulesets.Mania.UI if (HitObjectTimingChanges != null || BarlineTimingChanges != null) return; - HitObjectTimingChanges = new List[PreferredColumns]; - BarlineTimingChanges = new List(); + HitObjectTimingChanges = new List[PreferredColumns]; + BarlineTimingChanges = new List(); for (int i = 0; i < PreferredColumns; i++) - HitObjectTimingChanges[i] = new List(); + HitObjectTimingChanges[i] = new List(); double lastSpeedMultiplier = 1; double lastBeatLength = 500; @@ -91,7 +91,7 @@ namespace osu.Game.Rulesets.Mania.UI if (difficultyPoint != null) lastSpeedMultiplier = difficultyPoint.SpeedMultiplier; - return new TimingChange + return new TimingSection { Time = c.Time, BeatLength = lastBeatLength, diff --git a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs index 741cd9d284..a88a543d96 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs @@ -59,7 +59,7 @@ namespace osu.Game.Rulesets.Mania.UI private readonly FlowContainer columns; public IEnumerable Columns => columns.Children; - private readonly TimingChangeContainer barLineContainer; + private readonly TimingSectionCollection barLineContainer; private List normalColumnColours = new List(); private Color4 specialColumnColour; @@ -117,7 +117,7 @@ namespace osu.Game.Rulesets.Mania.UI Padding = new MarginPadding { Top = HIT_TARGET_POSITION }, Children = new[] { - barLineContainer = new TimingChangeContainer + barLineContainer = new TimingSectionCollection { Name = "Bar lines", Anchor = Anchor.TopCentre, @@ -209,7 +209,7 @@ namespace osu.Game.Rulesets.Mania.UI public override void Add(DrawableHitObject h) => Columns.ElementAt(h.HitObject.Column).Add(h); - public void Add(DrawableTimingChange timingChange) => barLineContainer.Add(timingChange); + public void Add(DrawableTimingSection timingChange) => barLineContainer.Add(timingChange); public void Add(DrawableBarLine barline) => barLineContainer.Add(barline); protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) diff --git a/osu.Game/Rulesets/Timing/Drawables/DrawableTimingChange.cs b/osu.Game/Rulesets/Timing/Drawables/DrawableTimingSection.cs similarity index 89% rename from osu.Game/Rulesets/Timing/Drawables/DrawableTimingChange.cs rename to osu.Game/Rulesets/Timing/Drawables/DrawableTimingSection.cs index 399624b0f7..6cb1f566fb 100644 --- a/osu.Game/Rulesets/Timing/Drawables/DrawableTimingChange.cs +++ b/osu.Game/Rulesets/Timing/Drawables/DrawableTimingSection.cs @@ -16,9 +16,9 @@ namespace osu.Game.Rulesets.Timing.Drawables /// /// Represents a container in which contains hit objects and moves relative to the current time. /// - public abstract class DrawableTimingChange : Container + public abstract class DrawableTimingSection : Container { - public readonly TimingChange TimingChange; + public readonly TimingSection TimingChange; protected override Container Content => content; private readonly Container content; @@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Timing.Drawables /// /// The encapsulated timing change that provides the speed changes. /// The axes through which this timing change scrolls. - protected DrawableTimingChange(TimingChange timingChange, Axes scrollingAxes) + protected DrawableTimingSection(TimingSection timingChange, Axes scrollingAxes) { this.scrollingAxes = scrollingAxes; @@ -49,12 +49,12 @@ namespace osu.Game.Rulesets.Timing.Drawables public override Axes RelativeSizeAxes { get { return Axes.Both; } - set { throw new InvalidOperationException($"{nameof(DrawableTimingChange)} must always be relatively-sized."); } + set { throw new InvalidOperationException($"{nameof(DrawableTimingSection)} must always be relatively-sized."); } } protected override void Update() { - var parent = Parent as IHasTimeSpan; + var parent = Parent as Container; if (parent == null) return; @@ -63,9 +63,11 @@ namespace osu.Game.Rulesets.Timing.Drawables float speedAdjustedSize = (float)(1000 / TimingChange.BeatLength / TimingChange.SpeedMultiplier); Size = new Vector2((scrollingAxes & Axes.X) > 0 ? speedAdjustedSize : 1, (scrollingAxes & Axes.Y) > 0 ? speedAdjustedSize : 1); - RelativeChildSize = new Vector2((scrollingAxes & Axes.X) > 0 ? (float)parent.TimeSpan : 1, (scrollingAxes & Axes.Y) > 0 ? (float)parent.TimeSpan : 1); + RelativeChildSize = new Vector2((scrollingAxes & Axes.X) > 0 ? parent.RelativeChildSize.X : 1, (scrollingAxes & Axes.Y) > 0 ? parent.RelativeChildSize.Y : 1); } + protected double TimeSpan => (Parent as TimingSectionCollection)?.TimeSpan ?? 0; + /// /// Whether this timing change can contain a hit object. This is true if the hit object occurs "after" after this timing change. /// diff --git a/osu.Game/Rulesets/Timing/IHasTimeSpan.cs b/osu.Game/Rulesets/Timing/IHasTimeSpan.cs deleted file mode 100644 index 66c31515a9..0000000000 --- a/osu.Game/Rulesets/Timing/IHasTimeSpan.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2007-2017 ppy Pty Ltd . -// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE - -using osu.Framework.Graphics.Containers; - -namespace osu.Game.Rulesets.Timing -{ - /// - /// A type of container which spans a length of time. - /// - public interface IHasTimeSpan : IContainer - { - /// - /// The amount of time which this container spans. - /// - double TimeSpan { get; } - } -} \ No newline at end of file diff --git a/osu.Game/Rulesets/Timing/TimingChange.cs b/osu.Game/Rulesets/Timing/TimingSection.cs similarity index 91% rename from osu.Game/Rulesets/Timing/TimingChange.cs rename to osu.Game/Rulesets/Timing/TimingSection.cs index bdc45759c9..96ced6db4f 100644 --- a/osu.Game/Rulesets/Timing/TimingChange.cs +++ b/osu.Game/Rulesets/Timing/TimingSection.cs @@ -3,7 +3,7 @@ namespace osu.Game.Rulesets.Timing { - public class TimingChange + public class TimingSection { /// /// The time at which this timing change happened. diff --git a/osu.Game/Rulesets/Timing/TimingChangeContainer.cs b/osu.Game/Rulesets/Timing/TimingSectionCollection.cs similarity index 84% rename from osu.Game/Rulesets/Timing/TimingChangeContainer.cs rename to osu.Game/Rulesets/Timing/TimingSectionCollection.cs index 8758493145..4dcffb4cac 100644 --- a/osu.Game/Rulesets/Timing/TimingChangeContainer.cs +++ b/osu.Game/Rulesets/Timing/TimingSectionCollection.cs @@ -11,7 +11,7 @@ using osu.Game.Rulesets.Timing.Drawables; namespace osu.Game.Rulesets.Timing { - public class TimingChangeContainer : Container, IHasTimeSpan + public class TimingSectionCollection : Container { public double TimeSpan { get; set; } @@ -37,7 +37,7 @@ namespace osu.Game.Rulesets.Timing /// /// The hit object to contain. /// The last (time-wise) timing change which can contain . Null if no timing change exists. - private DrawableTimingChange timingChangeFor(DrawableHitObject hitObject) => Children.FirstOrDefault(c => c.CanContain(hitObject)) ?? Children.LastOrDefault(); + private DrawableTimingSection timingChangeFor(DrawableHitObject hitObject) => Children.FirstOrDefault(c => c.CanContain(hitObject)) ?? Children.LastOrDefault(); } /// @@ -48,8 +48,8 @@ namespace osu.Game.Rulesets.Timing { public override int Compare(Drawable x, Drawable y) { - var timingChangeX = x as DrawableTimingChange; - var timingChangeY = y as DrawableTimingChange; + var timingChangeX = x as DrawableTimingSection; + var timingChangeY = y as DrawableTimingSection; // If either of the two drawables are not hit objects, fall back to the base comparer if (timingChangeX?.TimingChange == null || timingChangeY?.TimingChange == null) diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 98b87608da..ef946c78dd 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -193,10 +193,9 @@ - - - - + + +