diff --git a/osu-framework b/osu-framework index 2d2e2fe698..b2d10ab19b 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 2d2e2fe698ab32d80d5e856f52c8c398ceb35540 +Subproject commit b2d10ab19b74ecd38911f8bdf278b42379da0530 diff --git a/osu.Desktop.VisualTests/Beatmaps/TestWorkingBeatmap.cs b/osu.Desktop.VisualTests/Beatmaps/TestWorkingBeatmap.cs index 580e062aaf..b45574b761 100644 --- a/osu.Desktop.VisualTests/Beatmaps/TestWorkingBeatmap.cs +++ b/osu.Desktop.VisualTests/Beatmaps/TestWorkingBeatmap.cs @@ -10,7 +10,7 @@ namespace osu.Desktop.VisualTests.Beatmaps public class TestWorkingBeatmap : WorkingBeatmap { public TestWorkingBeatmap(Beatmap beatmap) - : base(beatmap.BeatmapInfo, true) + : base(beatmap.BeatmapInfo) { this.beatmap = beatmap; } diff --git a/osu.Desktop.VisualTests/Tests/TestCaseBeatSyncedContainer.cs b/osu.Desktop.VisualTests/Tests/TestCaseBeatSyncedContainer.cs index 5e9b976c8a..50d1df9964 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseBeatSyncedContainer.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseBeatSyncedContainer.cs @@ -177,9 +177,7 @@ namespace osu.Desktop.VisualTests.Tests beatsPerMinute.Value = 60000 / timingPoint.BeatLength; adjustedBeatLength.Value = timingPoint.BeatLength; - flashLayer.ClearTransforms(); - flashLayer.FadeTo(1); - flashLayer.FadeTo(0, timingPoint.BeatLength); + flashLayer.FadeOutFromOne(timingPoint.BeatLength); } } diff --git a/osu.Desktop.VisualTests/Tests/TestCaseContextMenu.cs b/osu.Desktop.VisualTests/Tests/TestCaseContextMenu.cs index f9dc424153..0b4e8a5799 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseContextMenu.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseContextMenu.cs @@ -59,20 +59,13 @@ namespace osu.Desktop.VisualTests.Tests { base.LoadComplete(); - using (container.BeginLoopedSequence()) - { - container.MoveTo(new Vector2(0, 100), duration); - using (container.BeginDelayedSequence(duration)) - { - container.MoveTo(new Vector2(100, 100), duration); - using (container.BeginDelayedSequence(duration)) - { - container.MoveTo(new Vector2(100, 0), duration); - using (container.BeginDelayedSequence(duration)) - container.MoveTo(Vector2.Zero, duration); - } - } - } + // Move box along a square trajectory + container.Loop(c => c + .MoveTo(new Vector2(0, 100), duration).Then() + .MoveTo(new Vector2(100, 100), duration).Then() + .MoveTo(new Vector2(100, 0), duration).Then() + .MoveTo(Vector2.Zero, duration) + ); } private class MyContextMenuContainer : Container, IHasContextMenu @@ -95,10 +88,10 @@ namespace osu.Desktop.VisualTests.Tests { new OsuContextMenuItem(@"Simple option"), new OsuContextMenuItem(@"Simple very very long option"), - new OsuContextMenuItem(@"Change width", MenuItemType.Highlighted) { Action = () => ResizeWidthTo(Width * 2, 100, EasingTypes.OutQuint) }, - new OsuContextMenuItem(@"Change height", MenuItemType.Highlighted) { Action = () => ResizeHeightTo(Height * 2, 100, EasingTypes.OutQuint) }, - new OsuContextMenuItem(@"Change width back", MenuItemType.Destructive) { Action = () => ResizeWidthTo(Width / 2, 100, EasingTypes.OutQuint) }, - new OsuContextMenuItem(@"Change height back", MenuItemType.Destructive) { Action = () => ResizeHeightTo(Height / 2, 100, EasingTypes.OutQuint) }, + new OsuContextMenuItem(@"Change width", MenuItemType.Highlighted) { Action = () => this.ResizeWidthTo(Width * 2, 100, Easing.OutQuint) }, + new OsuContextMenuItem(@"Change height", MenuItemType.Highlighted) { Action = () => this.ResizeHeightTo(Height * 2, 100, Easing.OutQuint) }, + new OsuContextMenuItem(@"Change width back", MenuItemType.Destructive) { Action = () => this.ResizeWidthTo(Width / 2, 100, Easing.OutQuint) }, + new OsuContextMenuItem(@"Change height back", MenuItemType.Destructive) { Action = () => this.ResizeHeightTo(Height / 2, 100, Easing.OutQuint) }, }; } } diff --git a/osu.Desktop.VisualTests/Tests/TestCaseKeyCounter.cs b/osu.Desktop.VisualTests/Tests/TestCaseKeyCounter.cs index 87a40a76ca..f65dbe7a64 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseKeyCounter.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseKeyCounter.cs @@ -96,7 +96,7 @@ namespace osu.Desktop.VisualTests.Tests { SelectionBox.ScaleTo( new Vector2(value, 1), - 300, EasingTypes.OutQuint); + 300, Easing.OutQuint); } } } diff --git a/osu.Desktop.VisualTests/Tests/TestCaseNotificationManager.cs b/osu.Desktop.VisualTests/Tests/TestCaseNotificationManager.cs index 4ba50c8220..849df1263e 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseNotificationManager.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseNotificationManager.cs @@ -56,10 +56,7 @@ namespace osu.Desktop.VisualTests.Tests } if (remaining > 0) - { - Delay(80); - Schedule(() => sendBarrage(remaining - 1)); - } + Scheduler.AddDelayed(() => sendBarrage(remaining - 1), 80); } protected override void Update() diff --git a/osu.Desktop.VisualTests/Tests/TestCaseScrollingHitObjects.cs b/osu.Desktop.VisualTests/Tests/TestCaseScrollingHitObjects.cs index 8e5cf8687c..43f30a96b0 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseScrollingHitObjects.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseScrollingHitObjects.cs @@ -196,7 +196,7 @@ namespace osu.Desktop.VisualTests.Tests protected override void LoadComplete() { base.LoadComplete(); - FadeInFromZero(250, EasingTypes.OutQuint); + this.FadeInFromZero(250, Easing.OutQuint); } protected override void Update() diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs index 00929c06c2..8ca129eb91 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs @@ -67,6 +67,8 @@ namespace osu.Desktop.VisualTests.Tests private void changePlayfieldSize(int step) { + double delay = 0; + // Add new hits switch (step) { @@ -84,7 +86,7 @@ namespace osu.Desktop.VisualTests.Tests break; case 5: addSwell(1000); - playfieldContainer.Delay(scroll_time - 100); + delay = scroll_time - 100; break; } @@ -92,10 +94,10 @@ namespace osu.Desktop.VisualTests.Tests switch (step) { default: - playfieldContainer.ResizeTo(new Vector2(1, rng.Next(25, 400)), 500); + playfieldContainer.Delay(delay).ResizeTo(new Vector2(1, rng.Next(25, 400)), 500); break; case 6: - playfieldContainer.ResizeTo(new Vector2(1, TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT), 500); + playfieldContainer.Delay(delay).ResizeTo(new Vector2(1, TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT), 500); break; } } diff --git a/osu.Desktop/Overlays/VersionManager.cs b/osu.Desktop/Overlays/VersionManager.cs index a8ab97ce37..5b79ecfaf1 100644 --- a/osu.Desktop/Overlays/VersionManager.cs +++ b/osu.Desktop/Overlays/VersionManager.cs @@ -175,7 +175,7 @@ namespace osu.Desktop.Overlays protected override void PopIn() { - FadeIn(1000); + this.FadeIn(1000); } protected override void PopOut() diff --git a/osu.Game.Rulesets.Mania/UI/Column.cs b/osu.Game.Rulesets.Mania/UI/Column.cs index 12b6f61a12..a4d292ec45 100644 --- a/osu.Game.Rulesets.Mania/UI/Column.cs +++ b/osu.Game.Rulesets.Mania/UI/Column.cs @@ -206,8 +206,8 @@ namespace osu.Game.Rulesets.Mania.UI if (args.Key == Key) { - background.FadeTo(background.Alpha + 0.2f, 50, EasingTypes.OutQuint); - keyIcon.ScaleTo(1.4f, 50, EasingTypes.OutQuint); + background.FadeTo(background.Alpha + 0.2f, 50, Easing.OutQuint); + keyIcon.ScaleTo(1.4f, 50, Easing.OutQuint); } return false; @@ -217,8 +217,8 @@ namespace osu.Game.Rulesets.Mania.UI { if (args.Key == Key) { - background.FadeTo(0.2f, 800, EasingTypes.OutQuart); - keyIcon.ScaleTo(1f, 400, EasingTypes.OutQuart); + background.FadeTo(0.2f, 800, Easing.OutQuart); + keyIcon.ScaleTo(1f, 400, Easing.OutQuart); } return false; diff --git a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs index 3feb448752..03b6e18856 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs @@ -16,8 +16,6 @@ using System.Linq; using System.Collections.Generic; using osu.Game.Rulesets.Objects.Drawables; using osu.Framework.Input; -using osu.Framework.Graphics.Transforms; -using osu.Framework.MathUtils; using osu.Game.Rulesets.Mania.Objects.Drawables; using osu.Game.Rulesets.Timing; using osu.Framework.Configuration; @@ -222,10 +220,10 @@ namespace osu.Game.Rulesets.Mania.UI switch (args.Key) { case Key.Minus: - transformVisibleTimeRangeTo(visibleTimeRange + time_span_step, 200, EasingTypes.OutQuint); + transformVisibleTimeRangeTo(visibleTimeRange + time_span_step, 200, Easing.OutQuint); break; case Key.Plus: - transformVisibleTimeRangeTo(visibleTimeRange - time_span_step, 200, EasingTypes.OutQuint); + transformVisibleTimeRangeTo(visibleTimeRange - time_span_step, 200, Easing.OutQuint); break; } } @@ -233,9 +231,9 @@ namespace osu.Game.Rulesets.Mania.UI return false; } - private void transformVisibleTimeRangeTo(double newTimeRange, double duration = 0, EasingTypes easing = EasingTypes.None) + private void transformVisibleTimeRangeTo(double newTimeRange, double duration = 0, Easing easing = Easing.None) { - TransformTo(newTimeRange, duration, easing, new TransformTimeSpan()); + this.TransformTo(nameof(visibleTimeRange), newTimeRange, duration, easing); } protected override void Update() @@ -244,23 +242,5 @@ namespace osu.Game.Rulesets.Mania.UI // While masking on effectively only the Y-axis, so we need to set the width of the bar line container manually barLineContainer.Width = columns.Width; } - - private class TransformTimeSpan : Transform - { - public double CurrentValue - { - get - { - double time = Time?.Current ?? 0; - if (time < StartTime) return StartValue; - if (time >= EndTime) return EndValue; - - return Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing); - } - } - - public override void Apply(Drawable d) => ((ManiaPlayfield)d).visibleTimeRange.Value = (float)CurrentValue; - public override void ReadIntoStartValue(Drawable d) => StartValue = ((ManiaPlayfield)d).visibleTimeRange.Value; - } } } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs index 925767b851..2396e5d129 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs @@ -94,12 +94,11 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections using (fp.BeginAbsoluteSequence(fadeInTime)) { fp.FadeIn(DrawableOsuHitObject.TIME_FADEIN); - fp.ScaleTo(1, DrawableOsuHitObject.TIME_FADEIN, EasingTypes.Out); + fp.ScaleTo(1, DrawableOsuHitObject.TIME_FADEIN, Easing.Out); - fp.MoveTo(pointEndPosition, DrawableOsuHitObject.TIME_FADEIN, EasingTypes.Out); + fp.MoveTo(pointEndPosition, DrawableOsuHitObject.TIME_FADEIN, Easing.Out); - fp.Delay(fadeOutTime - fadeInTime); - fp.FadeOut(DrawableOsuHitObject.TIME_FADEIN); + fp.Delay(fadeOutTime - fadeInTime).FadeOut(DrawableOsuHitObject.TIME_FADEIN); } fp.Expire(true); diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs index 75b2dc0a32..f68a7a765b 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs @@ -112,29 +112,26 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables { double duration = ((HitObject as IHasEndTime)?.EndTime ?? HitObject.StartTime) - HitObject.StartTime; - using (glow.BeginDelayedSequence(duration)) - glow.FadeOut(400); + glow.Delay(duration).FadeOut(400); switch (state) { case ArmedState.Idle: - using (BeginDelayedSequence(duration + TIME_PREEMPT)) - FadeOut(TIME_FADEOUT); + this.Delay(duration + TIME_PREEMPT).FadeOut(TIME_FADEOUT); Expire(true); break; case ArmedState.Miss: ApproachCircle.FadeOut(50); - FadeOut(TIME_FADEOUT / 5); + this.FadeOut(TIME_FADEOUT / 5); Expire(); break; case ArmedState.Hit: ApproachCircle.FadeOut(50); const double flash_in = 40; - - flash.FadeTo(0.8f, flash_in); - using (flash.BeginDelayedSequence(flash_in)) - flash.FadeOut(100); + flash.FadeTo(0.8f, flash_in) + .Then() + .FadeOut(100); explode.FadeIn(flash_in); @@ -145,8 +142,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables circle.FadeOut(); number.FadeOut(); - FadeOut(800); - ScaleTo(Scale * 1.5f, 400, EasingTypes.OutQuad); + this.FadeOut(800) + .ScaleTo(Scale * 1.5f, 400, Easing.OutQuad); } Expire(); diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs index 2711ec1a62..ca1b44e1c7 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs @@ -4,6 +4,7 @@ using System.ComponentModel; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Osu.Judgements; +using osu.Framework.Graphics; namespace osu.Game.Rulesets.Osu.Objects.Drawables { @@ -24,7 +25,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables protected sealed override void UpdateState(ArmedState state) { - Flush(); + FinishTransforms(); using (BeginAbsoluteSequence(HitObject.StartTime - TIME_PREEMPT, true)) { @@ -44,7 +45,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables protected virtual void UpdatePreemptState() { - FadeIn(TIME_FADEIN); + this.FadeIn(TIME_FADEIN); } protected virtual void UpdateCurrentState(ArmedState state) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs index eaa0bb7d27..892d106b02 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs @@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables protected override void LoadComplete() { if (Judgement.Result != HitResult.Miss) - JudgementText.TransformSpacingTo(new Vector2(14, 0), 1800, EasingTypes.OutQuint); + JudgementText.TransformSpacingTo(new Vector2(14, 0), 1800, Easing.OutQuint); base.LoadComplete(); } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs index c6c009e8f2..d5583b0d9d 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs @@ -158,14 +158,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables { ball.FadeIn(); - Delay(slider.Duration, true); + using (BeginDelayedSequence(slider.Duration, true)) + { + body.FadeOut(160); + ball.FadeOut(160); - body.FadeOut(160); - ball.FadeOut(160); - - FadeOut(800); - - Expire(); + this.FadeOut(800) + .Expire(); + } } public Drawable ProxiedLayer => initialCircle.ApproachCircle; diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs index 28fbf46a92..2a50b23047 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs @@ -62,14 +62,12 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables { var animIn = Math.Min(150, sliderTick.StartTime - FadeInTime); - ScaleTo(0.5f); - ScaleTo(1.2f, animIn); - FadeIn(animIn); - - Delay(animIn); - ScaleTo(1, 150, EasingTypes.Out); - - Delay(-animIn); + this.Animate( + d => d.FadeIn(animIn), + d => d.ScaleTo(0.5f).ScaleTo(1.2f, animIn) + ).Then( + d => d.ScaleTo(1, 150, Easing.Out) + ); } protected override void UpdateCurrentState(ArmedState state) @@ -77,16 +75,15 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables switch (state) { case ArmedState.Idle: - Delay(FadeOutTime - sliderTick.StartTime); - FadeOut(); + this.Delay(FadeOutTime - sliderTick.StartTime).FadeOut(); break; case ArmedState.Miss: - FadeOut(160); - FadeColour(Color4.Red, 80); + this.FadeOut(160) + .FadeColour(Color4.Red, 80); break; case ArmedState.Hit: - FadeOut(120, EasingTypes.OutQuint); - ScaleTo(Scale * 1.5f, 120, EasingTypes.OutQuint); + this.FadeOut(120, Easing.OutQuint) + .ScaleTo(Scale * 1.5f, 120, Easing.OutQuint); break; } } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs index 840acb8221..2aae1bb24e 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs @@ -174,9 +174,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables ticks.Rotation = disc.Rotation; float relativeCircleScale = spinner.Scale * circle.DrawHeight / mainContainer.DrawHeight; - disc.ScaleTo(relativeCircleScale + (1 - relativeCircleScale) * Progress, 200, EasingTypes.OutQuint); + disc.ScaleTo(relativeCircleScale + (1 - relativeCircleScale) * Progress, 200, Easing.OutQuint); - symbol.RotateTo(disc.Rotation / 2, 500, EasingTypes.OutQuint); + symbol.RotateTo(disc.Rotation / 2, 500, Easing.OutQuint); } protected override void UpdatePreemptState() @@ -184,35 +184,33 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables base.UpdatePreemptState(); circleContainer.ScaleTo(spinner.Scale * 0.3f); - circleContainer.ScaleTo(spinner.Scale, TIME_PREEMPT / 1.4f, EasingTypes.OutQuint); + circleContainer.ScaleTo(spinner.Scale, TIME_PREEMPT / 1.4f, Easing.OutQuint); disc.RotateTo(-720); symbol.RotateTo(-720); - mainContainer.ScaleTo(0); - mainContainer.ScaleTo(spinner.Scale * circle.DrawHeight / DrawHeight * 1.4f, TIME_PREEMPT - 150, EasingTypes.OutQuint); - - mainContainer.Delay(TIME_PREEMPT - 150); - mainContainer.ScaleTo(1, 500, EasingTypes.OutQuint); + mainContainer + .ScaleTo(0) + .ScaleTo(spinner.Scale * circle.DrawHeight / DrawHeight * 1.4f, TIME_PREEMPT - 150, Easing.OutQuint) + .Then() + .ScaleTo(1, 500, Easing.OutQuint); } protected override void UpdateCurrentState(ArmedState state) { - Delay(spinner.Duration, true); - - FadeOut(160); + var sequence = this.Delay(spinner.Duration).FadeOut(160); switch (state) { case ArmedState.Hit: - ScaleTo(Scale * 1.2f, 320, EasingTypes.Out); - Expire(); + sequence.ScaleTo(Scale * 1.2f, 320, Easing.Out); break; case ArmedState.Miss: - ScaleTo(Scale * 0.8f, 320, EasingTypes.In); - Expire(); + sequence.ScaleTo(Scale * 0.8f, 320, Easing.In); break; } + + Expire(); } } } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs index 9a114aa72c..dbfd9b291b 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs @@ -106,8 +106,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces tracking = value; - follow.ScaleTo(tracking ? 2.8f : 1, 300, EasingTypes.OutQuint); - follow.FadeTo(tracking ? 0.2f : 0, 300, EasingTypes.OutQuint); + follow.ScaleTo(tracking ? 2.8f : 1, 300, Easing.OutQuint); + follow.FadeTo(tracking ? 0.2f : 0, 300, Easing.OutQuint); } } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBouncer.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBouncer.cs index a34ff30a43..10d14b5485 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBouncer.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBouncer.cs @@ -37,8 +37,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces protected override void LoadComplete() { base.LoadComplete(); - using (icon.BeginLoopedSequence()) - icon.RotateTo(360, 1000); + icon.Spin(1000, RotationDirection.Clockwise); } public void UpdateProgress(double progress, int repeat) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs index f3ddf683d2..cd808abe9d 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs @@ -4,7 +4,6 @@ using System; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Transforms; using osu.Framework.Input; using osu.Game.Graphics; using OpenTK; @@ -127,13 +126,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces if (Complete && updateCompleteTick()) { - background.Flush(flushType: typeof(TransformAlpha)); - background.FadeTo(tracking_alpha + 0.2f, 60, EasingTypes.OutExpo); - background.Delay(60); - background.FadeTo(tracking_alpha, 250, EasingTypes.OutQuint); + background.FinishTransforms(false, nameof(Alpha)); + background + .FadeTo(tracking_alpha + 0.2f, 60, Easing.OutExpo) + .Then() + .FadeTo(tracking_alpha, 250, Easing.OutQuint); } - RotateTo(currentRotation / 2, validAndTracking ? 500 : 1500, EasingTypes.OutExpo); + this.RotateTo(currentRotation / 2, validAndTracking ? 500 : 1500, Easing.OutExpo); } } } diff --git a/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs b/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs index 5ede3f56f5..b92f1bc60a 100644 --- a/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs +++ b/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs @@ -36,7 +36,7 @@ namespace osu.Game.Rulesets.Osu.Replays /// /// What easing to use when moving between hitobjects /// - private EasingTypes preferredEasing => DelayedMovements ? EasingTypes.InOutCubic : EasingTypes.Out; + private Easing preferredEasing => DelayedMovements ? Easing.InOutCubic : Easing.Out; #endregion @@ -110,7 +110,7 @@ namespace osu.Game.Rulesets.Osu.Replays { // Default values for circles/sliders Vector2 startPosition = h.StackedPosition; - EasingTypes easing = preferredEasing; + Easing easing = preferredEasing; float spinnerDirection = -1; // The startPosition for the slider should not be its .Position, but the point on the circle whose tangent crosses the current cursor position @@ -125,7 +125,7 @@ namespace osu.Game.Rulesets.Osu.Replays if (spinCentreOffset.Length > SPIN_RADIUS) { // If moving in from the outside, don't ease out (default eases out). This means auto will "start" spinning immediately after moving into position. - easing = EasingTypes.In; + easing = Easing.In; } } @@ -190,7 +190,7 @@ namespace osu.Game.Rulesets.Osu.Replays } } - private void moveToHitObject(double targetTime, Vector2 targetPos, double hitObjectRadius, EasingTypes easing) + private void moveToHitObject(double targetTime, Vector2 targetPos, double hitObjectRadius, Easing easing) { ReplayFrame lastFrame = Frames[Frames.Count - 1]; diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLine.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLine.cs index 5d627f2b50..7507ee600e 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLine.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLine.cs @@ -64,11 +64,10 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables protected override void LoadComplete() { base.LoadComplete(); - Delay(BarLine.StartTime - Time.Current); - FadeOut(base_fadeout_time * BarLine.ScrollTime / 1000); + this.Delay(BarLine.StartTime - Time.Current).FadeOut(base_fadeout_time * BarLine.ScrollTime / 1000); } - private void updateScrollPosition(double time) => MoveToX((float)((BarLine.StartTime - time) / BarLine.ScrollTime)); + private void updateScrollPosition(double time) => this.MoveToX((float)((BarLine.StartTime - time) / BarLine.ScrollTime)); protected override void Update() { diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRollTick.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRollTick.cs index 56a747467e..b64bc64d9b 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRollTick.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRollTick.cs @@ -41,7 +41,7 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables switch (state) { case ArmedState.Hit: - Content.ScaleTo(0, 100, EasingTypes.OutQuint); + Content.ScaleTo(0, 100, Easing.OutQuint); break; } } diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs index a4a46e3b48..0d5c8d2a25 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs @@ -65,45 +65,42 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables protected override void UpdateState(ArmedState state) { - Delay(HitObject.StartTime - Time.Current + Judgement.TimeOffset, true); - var circlePiece = MainPiece as CirclePiece; + circlePiece?.FlashBox.FinishTransforms(); - circlePiece?.FlashBox.Flush(); - - switch (State) + using (BeginDelayedSequence(HitObject.StartTime - Time.Current + Judgement.TimeOffset, true)) { - case ArmedState.Idle: - Delay(HitObject.HitWindowMiss); - break; - case ArmedState.Miss: - FadeOut(100); - break; - case ArmedState.Hit: - FadeOut(600); + switch (State) + { + case ArmedState.Idle: + this.Delay(HitObject.HitWindowMiss).Expire(); + break; + case ArmedState.Miss: + this.FadeOut(100) + .Expire(); + break; + case ArmedState.Hit: + var flash = circlePiece?.FlashBox; + if (flash != null) + { + flash.FadeTo(0.9f); + flash.FadeOut(300); + } - var flash = circlePiece?.FlashBox; - if (flash != null) - { - flash.FadeTo(0.9f); - flash.FadeOut(300); - } + const float gravity_time = 300; + const float gravity_travel_height = 200; + Content.ScaleTo(0.8f, gravity_time * 2, Easing.OutQuad); - FadeOut(800); + this.FadeOut(800) + .MoveToY(-gravity_travel_height, gravity_time, Easing.Out) + .Then() + .MoveToY(gravity_travel_height * 2, gravity_time * 2, Easing.In); - const float gravity_time = 300; - const float gravity_travel_height = 200; - - Content.ScaleTo(0.8f, gravity_time * 2, EasingTypes.OutQuad); - - MoveToY(-gravity_travel_height, gravity_time, EasingTypes.Out); - Delay(gravity_time, true); - MoveToY(gravity_travel_height * 2, gravity_time * 2, EasingTypes.In); - break; + Expire(); + break; + } } - - Expire(); } } } diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableSwell.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableSwell.cs index 1c72f2a7dd..a565f92fac 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableSwell.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableSwell.cs @@ -147,13 +147,14 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables var completion = (float)userHits / HitObject.RequiredHits; - expandingRing.FadeTo(expandingRing.Alpha + MathHelper.Clamp(completion / 16, 0.1f, 0.6f), 50); - using (expandingRing.BeginDelayedSequence(50)) - expandingRing.FadeTo(completion / 8, 2000, EasingTypes.OutQuint); + expandingRing + .FadeTo(expandingRing.Alpha + MathHelper.Clamp(completion / 16, 0.1f, 0.6f), 50) + .Then() + .FadeTo(completion / 8, 2000, Easing.OutQuint); - symbol.RotateTo((float)(completion * HitObject.Duration / 8), 4000, EasingTypes.OutQuint); + symbol.RotateTo((float)(completion * HitObject.Duration / 8), 4000, Easing.OutQuint); - expandingRing.ScaleTo(1f + Math.Min(target_ring_scale - 1f, (target_ring_scale - 1f) * completion * 1.3f), 260, EasingTypes.OutQuint); + expandingRing.ScaleTo(1f + Math.Min(target_ring_scale - 1f, (target_ring_scale - 1f) * completion * 1.3f), 260, Easing.OutQuint); if (userHits == HitObject.RequiredHits) { @@ -180,26 +181,21 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables protected override void UpdateState(ArmedState state) { const float preempt = 100; - - Delay(HitObject.StartTime - Time.Current - preempt, true); - - targetRing.ScaleTo(target_ring_scale, preempt * 4, EasingTypes.OutQuint); - - Delay(preempt, true); - - Delay(Judgement.TimeOffset + HitObject.Duration, true); - const float out_transition_time = 300; + double untilStartTime = HitObject.StartTime - Time.Current; + double untilJudgement = untilStartTime + Judgement.TimeOffset + HitObject.Duration; + + targetRing.Delay(untilStartTime - preempt).ScaleTo(target_ring_scale, preempt * 4, Easing.OutQuint); + this.Delay(untilJudgement).FadeOut(out_transition_time, Easing.Out); + switch (state) { case ArmedState.Hit: - bodyContainer.ScaleTo(1.4f, out_transition_time); + bodyContainer.Delay(untilJudgement).ScaleTo(1.4f, out_transition_time); break; } - FadeOut(out_transition_time, EasingTypes.Out); - Expire(); } diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CirclePiece.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CirclePiece.cs index 3f8249f5a9..698939e278 100644 --- a/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CirclePiece.cs +++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CirclePiece.cs @@ -166,9 +166,10 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces double duration = timingPoint.BeatLength * 2; - background.FadeEdgeEffectTo(1, pre_beat_transition_time, EasingTypes.OutQuint); - using (background.BeginDelayedSequence(pre_beat_transition_time)) - background.FadeEdgeEffectTo(edge_alpha_kiai, duration, EasingTypes.OutQuint); + background + .FadeEdgeEffectTo(1, pre_beat_transition_time, Easing.OutQuint) + .Then() + .FadeEdgeEffectTo(edge_alpha_kiai, duration, Easing.OutQuint); } } } \ No newline at end of file diff --git a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs index 08fd8dbecc..779471b8dc 100644 --- a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs +++ b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs @@ -6,6 +6,7 @@ using osu.Game.Rulesets.Objects.Drawables; using osu.Framework.Allocation; using osu.Game.Graphics; using osu.Game.Rulesets.Judgements; +using osu.Framework.Graphics; namespace osu.Game.Rulesets.Taiko.UI { @@ -47,7 +48,7 @@ namespace osu.Game.Rulesets.Taiko.UI switch (Judgement.Result) { case HitResult.Hit: - MoveToY(-100, 500); + this.MoveToY(-100, 500); break; } diff --git a/osu.Game.Rulesets.Taiko/UI/HitExplosion.cs b/osu.Game.Rulesets.Taiko/UI/HitExplosion.cs index 4d39ba0ead..c372ac1809 100644 --- a/osu.Game.Rulesets.Taiko/UI/HitExplosion.cs +++ b/osu.Game.Rulesets.Taiko/UI/HitExplosion.cs @@ -62,8 +62,8 @@ namespace osu.Game.Rulesets.Taiko.UI { base.LoadComplete(); - ScaleTo(3f, 1000, EasingTypes.OutQuint); - FadeOut(500); + this.ScaleTo(3f, 1000, Easing.OutQuint); + this.FadeOut(500); Expire(); } @@ -73,7 +73,7 @@ namespace osu.Game.Rulesets.Taiko.UI /// public void VisualiseSecondHit() { - ResizeTo(new Vector2(TaikoPlayfield.HIT_TARGET_OFFSET + TaikoHitObject.DEFAULT_STRONG_CIRCLE_DIAMETER), 50); + this.ResizeTo(new Vector2(TaikoPlayfield.HIT_TARGET_OFFSET + TaikoHitObject.DEFAULT_STRONG_CIRCLE_DIAMETER), 50); } } } diff --git a/osu.Game.Rulesets.Taiko/UI/InputDrum.cs b/osu.Game.Rulesets.Taiko/UI/InputDrum.cs index 999d76ab0b..60881f3c24 100644 --- a/osu.Game.Rulesets.Taiko/UI/InputDrum.cs +++ b/osu.Game.Rulesets.Taiko/UI/InputDrum.cs @@ -149,15 +149,17 @@ namespace osu.Game.Rulesets.Taiko.UI const float down_time = 40; const float up_time = 1000; - back.ScaleTo(target.Scale.X - scale_amount, down_time, EasingTypes.OutQuint); - back.Delay(down_time); - back.ScaleTo(1, up_time, EasingTypes.OutQuint); + back.ScaleTo(target.Scale.X - scale_amount, down_time, Easing.OutQuint) + .Then() + .ScaleTo(1, up_time, Easing.OutQuint); - target.ScaleTo(target.Scale.X - scale_amount, down_time, EasingTypes.OutQuint); - target.FadeTo(Math.Min(target.Alpha + alpha_amount, 1), down_time, EasingTypes.OutQuint); - target.Delay(down_time); - target.ScaleTo(1, up_time, EasingTypes.OutQuint); - target.FadeOut(up_time, EasingTypes.OutQuint); + target.Animate( + t => t.ScaleTo(target.Scale.X - scale_amount, down_time, Easing.OutQuint), + t => t.FadeTo(Math.Min(target.Alpha + alpha_amount, 1), down_time, Easing.OutQuint) + ).Then( + t => t.ScaleTo(1, up_time, Easing.OutQuint), + t => t.FadeOut(up_time, Easing.OutQuint) + ); } return false; diff --git a/osu.Game.Rulesets.Taiko/UI/KiaiHitExplosion.cs b/osu.Game.Rulesets.Taiko/UI/KiaiHitExplosion.cs index b4aec7057b..524490fac3 100644 --- a/osu.Game.Rulesets.Taiko/UI/KiaiHitExplosion.cs +++ b/osu.Game.Rulesets.Taiko/UI/KiaiHitExplosion.cs @@ -59,8 +59,8 @@ namespace osu.Game.Rulesets.Taiko.UI { base.LoadComplete(); - ScaleTo(new Vector2(1, 3f), 500, EasingTypes.OutQuint); - FadeOut(250); + this.ScaleTo(new Vector2(1, 3f), 500, Easing.OutQuint); + this.FadeOut(250); Expire(); } diff --git a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs index e467df0c53..24970b8dab 100644 --- a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs @@ -12,6 +12,7 @@ using osu.Framework.Desktop.Platform; using osu.Framework.Platform; using osu.Game.Database; using osu.Game.IPC; +using osu.Framework.Allocation; namespace osu.Game.Tests.Beatmaps.IO { @@ -26,15 +27,15 @@ namespace osu.Game.Tests.Beatmaps.IO //unfortunately for the time being we need to reference osu.Framework.Desktop for a game host here. using (HeadlessGameHost host = new HeadlessGameHost()) { - loadOsu(host); + var osu = loadOsu(host); var temp = prepareTempCopy(osz_path); Assert.IsTrue(File.Exists(temp)); - host.Dependencies.Get().Import(temp); + osu.Dependencies.Get().Import(temp); - ensureLoaded(host); + ensureLoaded(osu); Assert.IsFalse(File.Exists(temp)); } @@ -49,7 +50,7 @@ namespace osu.Game.Tests.Beatmaps.IO Assert.IsTrue(host.IsPrimaryInstance); Assert.IsTrue(!client.IsPrimaryInstance); - loadOsu(host); + var osu = loadOsu(host); var temp = prepareTempCopy(osz_path); @@ -59,7 +60,7 @@ namespace osu.Game.Tests.Beatmaps.IO if (!importer.ImportAsync(temp).Wait(10000)) Assert.Fail(@"IPC took too long to send"); - ensureLoaded(host); + ensureLoaded(osu); Assert.IsFalse(File.Exists(temp)); } @@ -71,16 +72,16 @@ namespace osu.Game.Tests.Beatmaps.IO //unfortunately for the time being we need to reference osu.Framework.Desktop for a game host here. using (HeadlessGameHost host = new HeadlessGameHost()) { - loadOsu(host); + var osu = loadOsu(host); var temp = prepareTempCopy(osz_path); Assert.IsTrue(File.Exists(temp), "Temporary file copy never substantiated"); using (File.OpenRead(temp)) - host.Dependencies.Get().Import(temp); + osu.Dependencies.Get().Import(temp); - ensureLoaded(host); + ensureLoaded(osu); File.Delete(temp); @@ -103,19 +104,19 @@ namespace osu.Game.Tests.Beatmaps.IO Thread.Sleep(1); //reset beatmap database (sqlite and storage backing) - host.Dependencies.Get().Reset(); - host.Dependencies.Get().Reset(); + osu.Dependencies.Get().Reset(); + osu.Dependencies.Get().Reset(); return osu; } - private void ensureLoaded(GameHost host, int timeout = 60000) + private void ensureLoaded(OsuGameBase osu, int timeout = 60000) { IEnumerable resultSets = null; Action waitAction = () => { - while (!(resultSets = host.Dependencies.Get() + while (!(resultSets = osu.Dependencies.Get() .Query().Where(s => s.OnlineBeatmapSetID == 241526)).Any()) Thread.Sleep(50); }; @@ -132,7 +133,7 @@ namespace osu.Game.Tests.Beatmaps.IO //if we don't re-check here, the set will be inserted but the beatmaps won't be present yet. waitAction = () => { - while ((resultBeatmaps = host.Dependencies.Get() + while ((resultBeatmaps = osu.Dependencies.Get() .GetAllWithChildren(s => s.OnlineBeatmapSetID == 241526 && s.BaseDifficultyID > 0)).Count() != 12) Thread.Sleep(50); }; @@ -140,7 +141,7 @@ namespace osu.Game.Tests.Beatmaps.IO Assert.IsTrue(waitAction.BeginInvoke(null, null).AsyncWaitHandle.WaitOne(timeout), @"Beatmaps did not import to the database in allocated time"); - var set = host.Dependencies.Get().GetChildren(resultSets.First()); + var set = osu.Dependencies.Get().GetChildren(resultSets.First()); Assert.IsTrue(set.Beatmaps.Count == resultBeatmaps.Count(), $@"Incorrect database beatmap count post-import ({resultBeatmaps.Count()} but should be {set.Beatmaps.Count})."); @@ -150,16 +151,16 @@ namespace osu.Game.Tests.Beatmaps.IO Assert.IsTrue(set.Beatmaps.Count > 0); - var beatmap = host.Dependencies.Get().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 0))?.Beatmap; + var beatmap = osu.Dependencies.Get().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 0))?.Beatmap; Assert.IsTrue(beatmap?.HitObjects.Count > 0); - beatmap = host.Dependencies.Get().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 1))?.Beatmap; + beatmap = osu.Dependencies.Get().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 1))?.Beatmap; Assert.IsTrue(beatmap?.HitObjects.Count > 0); - beatmap = host.Dependencies.Get().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 2))?.Beatmap; + beatmap = osu.Dependencies.Get().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 2))?.Beatmap; Assert.IsTrue(beatmap?.HitObjects.Count > 0); - beatmap = host.Dependencies.Get().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 3))?.Beatmap; + beatmap = osu.Dependencies.Get().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 3))?.Beatmap; Assert.IsTrue(beatmap?.HitObjects.Count > 0); } } diff --git a/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs b/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs index b59dbac722..5b263e4798 100644 --- a/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs +++ b/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs @@ -35,7 +35,7 @@ namespace osu.Game.Beatmaps.Drawables new PanelBackground(beatmap) { RelativeSizeAxes = Axes.Both, - OnLoadComplete = d => d.FadeInFromZero(400, EasingTypes.Out), + OnLoadComplete = d => d.FadeInFromZero(400, Easing.Out), } ) { diff --git a/osu.Game/Beatmaps/Drawables/Panel.cs b/osu.Game/Beatmaps/Drawables/Panel.cs index 3dac50732c..d07be88392 100644 --- a/osu.Game/Beatmaps/Drawables/Panel.cs +++ b/osu.Game/Beatmaps/Drawables/Panel.cs @@ -64,9 +64,9 @@ namespace osu.Game.Beatmaps.Drawables } if (state == PanelSelectedState.Hidden) - FadeOut(300, EasingTypes.OutQuint); + this.FadeOut(300, Easing.OutQuint); else - FadeIn(250); + this.FadeIn(250); } private PanelSelectedState state = PanelSelectedState.NotSelected; diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 0362d06c66..4dd624c14e 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -22,17 +22,11 @@ namespace osu.Game.Beatmaps public readonly Bindable> Mods = new Bindable>(new Mod[] { }); - /// - /// Denotes whether extras like storyboards have been loaded for this . - /// - public bool FullyLoaded { get; protected set; } - - protected WorkingBeatmap(BeatmapInfo beatmapInfo, bool fullyLoaded = false) + protected WorkingBeatmap(BeatmapInfo beatmapInfo) { BeatmapInfo = beatmapInfo; BeatmapSetInfo = beatmapInfo.BeatmapSet; Metadata = beatmapInfo.Metadata ?? BeatmapSetInfo.Metadata; - FullyLoaded = fullyLoaded; Mods.ValueChanged += mods => applyRateAdjustments(); } diff --git a/osu.Game/Database/BeatmapDatabase.cs b/osu.Game/Database/BeatmapDatabase.cs index b31b71a728..84a7096da4 100644 --- a/osu.Game/Database/BeatmapDatabase.cs +++ b/osu.Game/Database/BeatmapDatabase.cs @@ -291,7 +291,7 @@ namespace osu.Game.Database if (beatmapInfo.Metadata == null) beatmapInfo.Metadata = beatmapInfo.BeatmapSet.Metadata; - WorkingBeatmap working = new DatabaseWorkingBeatmap(this, beatmapInfo, withStoryboard); + WorkingBeatmap working = new DatabaseWorkingBeatmap(this, beatmapInfo); previous?.TransferTo(working); diff --git a/osu.Game/Database/DatabaseWorkingBeatmap.cs b/osu.Game/Database/DatabaseWorkingBeatmap.cs index 01a8509c3e..25944faa42 100644 --- a/osu.Game/Database/DatabaseWorkingBeatmap.cs +++ b/osu.Game/Database/DatabaseWorkingBeatmap.cs @@ -14,8 +14,8 @@ namespace osu.Game.Database { private readonly BeatmapDatabase database; - public DatabaseWorkingBeatmap(BeatmapDatabase database, BeatmapInfo beatmapInfo, bool fullyLoaded = false) - : base(beatmapInfo, fullyLoaded) + public DatabaseWorkingBeatmap(BeatmapDatabase database, BeatmapInfo beatmapInfo) + : base(beatmapInfo) { this.database = database; } @@ -37,7 +37,7 @@ namespace osu.Game.Database beatmap = decoder.Decode(stream); } - if (beatmap == null || !FullyLoaded || BeatmapSetInfo.StoryboardFile == null) + if (beatmap == null || BeatmapSetInfo.StoryboardFile == null) return beatmap; using (var stream = new StreamReader(reader.GetStream(BeatmapSetInfo.StoryboardFile))) diff --git a/osu.Game/Graphics/Containers/ParallaxContainer.cs b/osu.Game/Graphics/Containers/ParallaxContainer.cs index 19475b00c9..ec9d30f244 100644 --- a/osu.Game/Graphics/Containers/ParallaxContainer.cs +++ b/osu.Game/Graphics/Containers/ParallaxContainer.cs @@ -42,7 +42,7 @@ namespace osu.Game.Graphics.Containers { if (!parallaxEnabled) { - content.MoveTo(Vector2.Zero, firstUpdate ? 0 : 1000, EasingTypes.OutQuint); + content.MoveTo(Vector2.Zero, firstUpdate ? 0 : 1000, Easing.OutQuint); content.Scale = new Vector2(1 + ParallaxAmount); } }; @@ -57,7 +57,7 @@ namespace osu.Game.Graphics.Containers if (parallaxEnabled) { Vector2 offset = input.CurrentState.Mouse == null ? Vector2.Zero : ToLocalSpace(input.CurrentState.Mouse.NativeState.Position) - DrawSize / 2; - content.MoveTo(offset * ParallaxAmount, firstUpdate ? 0 : 1000, EasingTypes.OutQuint); + content.MoveTo(offset * ParallaxAmount, firstUpdate ? 0 : 1000, Easing.OutQuint); content.Scale = new Vector2(1 + ParallaxAmount); } diff --git a/osu.Game/Graphics/Cursor/GameplayCursor.cs b/osu.Game/Graphics/Cursor/GameplayCursor.cs index da3975f606..e74222f136 100644 --- a/osu.Game/Graphics/Cursor/GameplayCursor.cs +++ b/osu.Game/Graphics/Cursor/GameplayCursor.cs @@ -29,14 +29,14 @@ namespace osu.Game.Graphics.Cursor protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) { ActiveCursor.Scale = new Vector2(1); - ActiveCursor.ScaleTo(1.2f, 100, EasingTypes.OutQuad); + ActiveCursor.ScaleTo(1.2f, 100, Easing.OutQuad); return base.OnMouseDown(state, args); } protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) { if (!state.Mouse.HasMainButtonPressed) - ActiveCursor.ScaleTo(1, 200, EasingTypes.OutQuad); + ActiveCursor.ScaleTo(1, 200, Easing.OutQuad); return base.OnMouseUp(state, args); } diff --git a/osu.Game/Graphics/Cursor/MenuCursor.cs b/osu.Game/Graphics/Cursor/MenuCursor.cs index 82ae424ab0..9658cfdb09 100644 --- a/osu.Game/Graphics/Cursor/MenuCursor.cs +++ b/osu.Game/Graphics/Cursor/MenuCursor.cs @@ -34,7 +34,7 @@ namespace osu.Game.Graphics.Cursor if (diff > 180) diff -= 360; degrees = ActiveCursor.Rotation + diff; - ActiveCursor.RotateTo(degrees, 600, EasingTypes.OutQuint); + ActiveCursor.RotateTo(degrees, 600, Easing.OutQuint); } return base.OnMouseMove(state); @@ -49,10 +49,10 @@ namespace osu.Game.Graphics.Cursor protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) { ActiveCursor.Scale = new Vector2(1); - ActiveCursor.ScaleTo(0.90f, 800, EasingTypes.OutQuint); + ActiveCursor.ScaleTo(0.90f, 800, Easing.OutQuint); ((Cursor)ActiveCursor).AdditiveLayer.Alpha = 0; - ((Cursor)ActiveCursor).AdditiveLayer.FadeInFromZero(800, EasingTypes.OutQuint); + ((Cursor)ActiveCursor).AdditiveLayer.FadeInFromZero(800, Easing.OutQuint); return base.OnMouseDown(state, args); } @@ -62,9 +62,9 @@ namespace osu.Game.Graphics.Cursor { dragging = false; - ((Cursor)ActiveCursor).AdditiveLayer.FadeOut(500, EasingTypes.OutQuint); - ActiveCursor.RotateTo(0, 600 * (1 + Math.Abs(ActiveCursor.Rotation / 720)), EasingTypes.OutElasticHalf); - ActiveCursor.ScaleTo(1, 500, EasingTypes.OutElastic); + ((Cursor)ActiveCursor).AdditiveLayer.FadeOut(500, Easing.OutQuint); + ActiveCursor.RotateTo(0, 600 * (1 + Math.Abs(ActiveCursor.Rotation / 720)), Easing.OutElasticHalf); + ActiveCursor.ScaleTo(1, 500, Easing.OutElastic); } return base.OnMouseUp(state, args); @@ -72,21 +72,21 @@ namespace osu.Game.Graphics.Cursor protected override bool OnClick(InputState state) { - ((Cursor)ActiveCursor).AdditiveLayer.FadeOutFromOne(500, EasingTypes.OutQuint); + ((Cursor)ActiveCursor).AdditiveLayer.FadeOutFromOne(500, Easing.OutQuint); return base.OnClick(state); } protected override void PopIn() { - ActiveCursor.FadeTo(1, 250, EasingTypes.OutQuint); - ActiveCursor.ScaleTo(1, 400, EasingTypes.OutQuint); + ActiveCursor.FadeTo(1, 250, Easing.OutQuint); + ActiveCursor.ScaleTo(1, 400, Easing.OutQuint); } protected override void PopOut() { - ActiveCursor.FadeTo(0, 900, EasingTypes.OutQuint); - ActiveCursor.ScaleTo(0, 500, EasingTypes.In); + ActiveCursor.FadeTo(0, 900, Easing.OutQuint); + ActiveCursor.ScaleTo(0, 500, Easing.In); } public class Cursor : Container diff --git a/osu.Game/Graphics/Cursor/OsuTooltipContainer.cs b/osu.Game/Graphics/Cursor/OsuTooltipContainer.cs index 44d176f4d9..e9d84b28a3 100644 --- a/osu.Game/Graphics/Cursor/OsuTooltipContainer.cs +++ b/osu.Game/Graphics/Cursor/OsuTooltipContainer.cs @@ -37,7 +37,7 @@ namespace osu.Game.Graphics.Cursor if (IsPresent) { AutoSizeDuration = 250; - background.FlashColour(OsuColour.Gray(0.4f), 1000, EasingTypes.OutQuint); + background.FlashColour(OsuColour.Gray(0.4f), 1000, Easing.OutQuint); } else AutoSizeDuration = 0; @@ -48,7 +48,7 @@ namespace osu.Game.Graphics.Cursor public OsuTooltip() { - AutoSizeEasing = EasingTypes.OutQuint; + AutoSizeEasing = Easing.OutQuint; CornerRadius = 5; Masking = true; @@ -83,16 +83,10 @@ namespace osu.Game.Graphics.Cursor protected override void PopIn() { instantMovement |= !IsPresent; - - ClearTransforms(); - FadeIn(500, EasingTypes.OutQuint); + this.FadeIn(500, Easing.OutQuint); } - protected override void PopOut() - { - using (BeginDelayedSequence(150)) - FadeOut(500, EasingTypes.OutQuint); - } + protected override void PopOut() => this.Delay(150).FadeOut(500, Easing.OutQuint); public override void Move(Vector2 pos) { @@ -103,7 +97,7 @@ namespace osu.Game.Graphics.Cursor } else { - MoveTo(pos, 200, EasingTypes.OutQuint); + this.MoveTo(pos, 200, Easing.OutQuint); } } } diff --git a/osu.Game/Graphics/IHasAccentColour.cs b/osu.Game/Graphics/IHasAccentColour.cs index 9eb66d8fac..ac2117c517 100644 --- a/osu.Game/Graphics/IHasAccentColour.cs +++ b/osu.Game/Graphics/IHasAccentColour.cs @@ -4,7 +4,6 @@ using OpenTK.Graphics; using osu.Framework.Graphics; using osu.Framework.Graphics.Transforms; -using osu.Game.Graphics.Transforms; namespace osu.Game.Graphics { @@ -27,10 +26,8 @@ namespace osu.Game.Graphics /// The new accent colour. /// The tween duration. /// The tween easing. - public static void FadeAccent(this T accentedDrawable, Color4 newColour, double duration = 0, EasingTypes easing = EasingTypes.None) - where T : Transformable, IHasAccentColour - { - accentedDrawable.TransformTo(newColour, duration, easing, new TransformAccent()); - } + public static TransformSequence FadeAccent(this T accentedDrawable, Color4 newColour, double duration = 0, Easing easing = Easing.None) + where T : IHasAccentColour + => accentedDrawable.TransformTo(nameof(accentedDrawable.AccentColour), newColour, duration, easing); } } diff --git a/osu.Game/Graphics/Transforms/TransformAccent.cs b/osu.Game/Graphics/Transforms/TransformAccent.cs deleted file mode 100644 index 53a452ad8a..0000000000 --- a/osu.Game/Graphics/Transforms/TransformAccent.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2007-2017 ppy Pty Ltd . -// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE - -using OpenTK.Graphics; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Transforms; -using osu.Framework.MathUtils; - -namespace osu.Game.Graphics.Transforms -{ - public class TransformAccent : Transform - { - /// - /// Current value of the transformed colour in linear colour space. - /// - public virtual Color4 CurrentValue - { - get - { - double time = Time?.Current ?? 0; - if (time < StartTime) return StartValue; - if (time >= EndTime) return EndValue; - - return Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing); - } - } - - public override void Apply(Drawable d) => ((IHasAccentColour)d).AccentColour = CurrentValue; - public override void ReadIntoStartValue(Drawable d) => StartValue = ((IHasAccentColour)d).AccentColour; - } -} diff --git a/osu.Game/Graphics/UserInterface/Bar.cs b/osu.Game/Graphics/UserInterface/Bar.cs index 1da73a60a2..20df553142 100644 --- a/osu.Game/Graphics/UserInterface/Bar.cs +++ b/osu.Game/Graphics/UserInterface/Bar.cs @@ -17,7 +17,7 @@ namespace osu.Game.Graphics.UserInterface private const int resize_duration = 250; - private const EasingTypes easing = EasingTypes.InOutCubic; + private const Easing easing = Easing.InOutCubic; private float length; /// diff --git a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs index 155b08fde8..f61192a1a6 100644 --- a/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs +++ b/osu.Game/Graphics/UserInterface/BreadcrumbControl.cs @@ -28,7 +28,7 @@ namespace osu.Game.Graphics.UserInterface var tabIndex = TabContainer.IndexOf(TabMap[tab]); t.State = tIndex < tabIndex ? Visibility.Hidden : Visibility.Visible; - t.Chevron.FadeTo(tIndex <= tabIndex ? 0f : 1f, 500, EasingTypes.OutQuint); + t.Chevron.FadeTo(tIndex <= tabIndex ? 0f : 1f, 500, Easing.OutQuint); } }; } @@ -54,13 +54,13 @@ namespace osu.Game.Graphics.UserInterface if (State == Visibility.Visible) { - FadeIn(transition_duration, EasingTypes.OutQuint); - ScaleTo(new Vector2(1f), transition_duration, EasingTypes.OutQuint); + this.FadeIn(transition_duration, Easing.OutQuint); + this.ScaleTo(new Vector2(1f), transition_duration, Easing.OutQuint); } else { - FadeOut(transition_duration, EasingTypes.OutQuint); - ScaleTo(new Vector2(0.8f, 1f), transition_duration, EasingTypes.OutQuint); + this.FadeOut(transition_duration, Easing.OutQuint); + this.ScaleTo(new Vector2(0.8f, 1f), transition_duration, Easing.OutQuint); } } } diff --git a/osu.Game/Graphics/UserInterface/DialogButton.cs b/osu.Game/Graphics/UserInterface/DialogButton.cs index 3f1b81893d..4e688999dc 100644 --- a/osu.Game/Graphics/UserInterface/DialogButton.cs +++ b/osu.Game/Graphics/UserInterface/DialogButton.cs @@ -96,11 +96,10 @@ namespace osu.Game.Graphics.UserInterface protected override bool OnClick(Framework.Input.InputState state) { didClick = true; - colourContainer.ResizeTo(new Vector2(1.5f, 1f), click_duration, EasingTypes.In); + colourContainer.ResizeTo(new Vector2(1.5f, 1f), click_duration, Easing.In); flash(); - Delay(click_duration); - Schedule(delegate { + this.Delay(click_duration).Schedule(delegate { colourContainer.ResizeTo(new Vector2(0.8f, 1f)); spriteText.Spacing = Vector2.Zero; glowContainer.FadeOut(); @@ -111,10 +110,10 @@ namespace osu.Game.Graphics.UserInterface protected override bool OnHover(Framework.Input.InputState state) { - spriteText.TransformSpacingTo(hoverSpacing, hover_duration, EasingTypes.OutElastic); + spriteText.TransformSpacingTo(hoverSpacing, hover_duration, Easing.OutElastic); - colourContainer.ResizeTo(new Vector2(hover_width, 1f), hover_duration, EasingTypes.OutElastic); - glowContainer.FadeIn(glow_fade_duration, EasingTypes.Out); + colourContainer.ResizeTo(new Vector2(hover_width, 1f), hover_duration, Easing.OutElastic); + glowContainer.FadeIn(glow_fade_duration, Easing.Out); base.OnHover(state); return true; } @@ -123,9 +122,9 @@ namespace osu.Game.Graphics.UserInterface { if (!didClick) { - colourContainer.ResizeTo(new Vector2(0.8f, 1f), hover_duration, EasingTypes.OutElastic); - spriteText.TransformSpacingTo(Vector2.Zero, hover_duration, EasingTypes.OutElastic); - glowContainer.FadeOut(glow_fade_duration, EasingTypes.Out); + colourContainer.ResizeTo(new Vector2(0.8f, 1f), hover_duration, Easing.OutElastic); + spriteText.TransformSpacingTo(Vector2.Zero, hover_duration, Easing.OutElastic); + glowContainer.FadeOut(glow_fade_duration, Easing.Out); } didClick = false; diff --git a/osu.Game/Graphics/UserInterface/IconButton.cs b/osu.Game/Graphics/UserInterface/IconButton.cs index 84904c10db..1598ace9df 100644 --- a/osu.Game/Graphics/UserInterface/IconButton.cs +++ b/osu.Game/Graphics/UserInterface/IconButton.cs @@ -84,31 +84,31 @@ namespace osu.Game.Graphics.UserInterface protected override bool OnHover(InputState state) { - hover.FadeIn(500, EasingTypes.OutQuint); + hover.FadeIn(500, Easing.OutQuint); return base.OnHover(state); } protected override void OnHoverLost(InputState state) { - hover.FadeOut(500, EasingTypes.OutQuint); + hover.FadeOut(500, Easing.OutQuint); base.OnHoverLost(state); } protected override bool OnClick(InputState state) { - hover.FlashColour(flashColour, 800, EasingTypes.OutQuint); + hover.FlashColour(flashColour, 800, Easing.OutQuint); return base.OnClick(state); } protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) { - content.ScaleTo(0.75f, 2000, EasingTypes.OutQuint); + content.ScaleTo(0.75f, 2000, Easing.OutQuint); return base.OnMouseDown(state, args); } protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) { - content.ScaleTo(1, 1000, EasingTypes.OutElastic); + content.ScaleTo(1, 1000, Easing.OutElastic); return base.OnMouseUp(state, args); } } diff --git a/osu.Game/Graphics/UserInterface/LineGraph.cs b/osu.Game/Graphics/UserInterface/LineGraph.cs index cd8ba96dc8..aa9256e576 100644 --- a/osu.Game/Graphics/UserInterface/LineGraph.cs +++ b/osu.Game/Graphics/UserInterface/LineGraph.cs @@ -49,7 +49,7 @@ namespace osu.Game.Graphics.UserInterface values = value.ToArray(); applyPath(); maskingContainer.Width = 0; - maskingContainer.ResizeWidthTo(1, transform_duration, EasingTypes.OutQuint); + maskingContainer.ResizeWidthTo(1, transform_duration, Easing.OutQuint); } } diff --git a/osu.Game/Graphics/UserInterface/LoadingAnimation.cs b/osu.Game/Graphics/UserInterface/LoadingAnimation.cs index eed5061abd..56ee47a7e6 100644 --- a/osu.Game/Graphics/UserInterface/LoadingAnimation.cs +++ b/osu.Game/Graphics/UserInterface/LoadingAnimation.cs @@ -34,14 +34,13 @@ namespace osu.Game.Graphics.UserInterface { base.LoadComplete(); - using (spinner.BeginLoopedSequence()) - spinner.RotateTo(360, 2000); + spinner.Spin(2000, RotationDirection.Clockwise); } private const float transition_duration = 500; - protected override void PopIn() => FadeIn(transition_duration * 5, EasingTypes.OutQuint); + protected override void PopIn() => this.FadeIn(transition_duration * 5, Easing.OutQuint); - protected override void PopOut() => FadeOut(transition_duration, EasingTypes.OutQuint); + protected override void PopOut() => this.FadeOut(transition_duration, Easing.OutQuint); } } diff --git a/osu.Game/Graphics/UserInterface/Nub.cs b/osu.Game/Graphics/UserInterface/Nub.cs index d5059945c6..f7df6cd4f4 100644 --- a/osu.Game/Graphics/UserInterface/Nub.cs +++ b/osu.Game/Graphics/UserInterface/Nub.cs @@ -43,9 +43,9 @@ namespace osu.Game.Graphics.UserInterface Current.ValueChanged += newValue => { if (newValue) - fill.FadeIn(200, EasingTypes.OutQuint); + fill.FadeIn(200, Easing.OutQuint); else - fill.FadeTo(0.01f, 200, EasingTypes.OutQuint); //todo: remove once we figure why containers aren't drawing at all times + fill.FadeTo(0.01f, 200, Easing.OutQuint); //todo: remove once we figure why containers aren't drawing at all times }; } @@ -80,13 +80,13 @@ namespace osu.Game.Graphics.UserInterface if (value) { - FadeColour(GlowingAccentColour, 500, EasingTypes.OutQuint); - FadeEdgeEffectTo(1, 500, EasingTypes.OutQuint); + this.FadeColour(GlowingAccentColour, 500, Easing.OutQuint); + FadeEdgeEffectTo(1, 500, Easing.OutQuint); } else { FadeEdgeEffectTo(0, 500); - FadeColour(AccentColour, 500); + this.FadeColour(AccentColour, 500); } } } @@ -95,7 +95,7 @@ namespace osu.Game.Graphics.UserInterface { set { - ResizeTo(new Vector2(value ? EXPANDED_SIZE : COLLAPSED_SIZE, 12), 500, EasingTypes.OutQuint); + this.ResizeTo(new Vector2(value ? EXPANDED_SIZE : COLLAPSED_SIZE, 12), 500, Easing.OutQuint); } } diff --git a/osu.Game/Graphics/UserInterface/OsuButton.cs b/osu.Game/Graphics/UserInterface/OsuButton.cs index 18156f8e76..ecbf51f8b9 100644 --- a/osu.Game/Graphics/UserInterface/OsuButton.cs +++ b/osu.Game/Graphics/UserInterface/OsuButton.cs @@ -91,13 +91,13 @@ namespace osu.Game.Graphics.UserInterface protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) { - Content.ScaleTo(0.9f, 4000, EasingTypes.OutQuint); + Content.ScaleTo(0.9f, 4000, Easing.OutQuint); return base.OnMouseDown(state, args); } protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) { - Content.ScaleTo(1, 1000, EasingTypes.OutElastic); + Content.ScaleTo(1, 1000, Easing.OutElastic); return base.OnMouseUp(state, args); } } diff --git a/osu.Game/Graphics/UserInterface/OsuContextMenu.cs b/osu.Game/Graphics/UserInterface/OsuContextMenu.cs index e17ce2a5b2..d4882cce1e 100644 --- a/osu.Game/Graphics/UserInterface/OsuContextMenu.cs +++ b/osu.Game/Graphics/UserInterface/OsuContextMenu.cs @@ -39,13 +39,13 @@ namespace osu.Game.Graphics.UserInterface Background.Colour = colours.ContextMenuGray; } - protected override void AnimateOpen() => FadeIn(fade_duration, EasingTypes.OutQuint); - protected override void AnimateClose() => FadeOut(fade_duration, EasingTypes.OutQuint); + protected override void AnimateOpen() => this.FadeIn(fade_duration, Easing.OutQuint); + protected override void AnimateClose() => this.FadeOut(fade_duration, Easing.OutQuint); protected override void UpdateContentHeight() { var actualHeight = (RelativeSizeAxes & Axes.Y) > 0 ? 1 : ContentHeight; - ResizeTo(new Vector2(1, State == MenuState.Opened ? actualHeight : 0), 300, EasingTypes.OutQuint); + this.ResizeTo(new Vector2(1, State == MenuState.Opened ? actualHeight : 0), 300, Easing.OutQuint); } } } diff --git a/osu.Game/Graphics/UserInterface/OsuContextMenuItem.cs b/osu.Game/Graphics/UserInterface/OsuContextMenuItem.cs index 5d12dadf5f..196e905bdc 100644 --- a/osu.Game/Graphics/UserInterface/OsuContextMenuItem.cs +++ b/osu.Game/Graphics/UserInterface/OsuContextMenuItem.cs @@ -93,15 +93,15 @@ namespace osu.Game.Graphics.UserInterface protected override bool OnHover(InputState state) { sampleHover.Play(); - textBold.FadeIn(transition_length, EasingTypes.OutQuint); - text.FadeOut(transition_length, EasingTypes.OutQuint); + textBold.FadeIn(transition_length, Easing.OutQuint); + text.FadeOut(transition_length, Easing.OutQuint); return base.OnHover(state); } protected override void OnHoverLost(InputState state) { - textBold.FadeOut(transition_length, EasingTypes.OutQuint); - text.FadeIn(transition_length, EasingTypes.OutQuint); + textBold.FadeOut(transition_length, Easing.OutQuint); + text.FadeIn(transition_length, Easing.OutQuint); base.OnHoverLost(state); } diff --git a/osu.Game/Graphics/UserInterface/OsuMenu.cs b/osu.Game/Graphics/UserInterface/OsuMenu.cs index 84b88da96e..e597bc44b5 100644 --- a/osu.Game/Graphics/UserInterface/OsuMenu.cs +++ b/osu.Game/Graphics/UserInterface/OsuMenu.cs @@ -19,14 +19,14 @@ namespace osu.Game.Graphics.UserInterface ItemsContainer.Padding = new MarginPadding(5); } - protected override void AnimateOpen() => FadeIn(300, EasingTypes.OutQuint); + protected override void AnimateOpen() => this.FadeIn(300, Easing.OutQuint); - protected override void AnimateClose() => FadeOut(300, EasingTypes.OutQuint); + protected override void AnimateClose() => this.FadeOut(300, Easing.OutQuint); protected override void UpdateContentHeight() { var actualHeight = (RelativeSizeAxes & Axes.Y) > 0 ? 1 : ContentHeight; - ResizeTo(new Vector2(1, State == MenuState.Opened ? actualHeight : 0), 300, EasingTypes.OutQuint); + this.ResizeTo(new Vector2(1, State == MenuState.Opened ? actualHeight : 0), 300, Easing.OutQuint); } } } diff --git a/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs b/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs index dc52fd0f62..b7ca25b95a 100644 --- a/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs +++ b/osu.Game/Graphics/UserInterface/OsuPasswordTextBox.cs @@ -47,8 +47,8 @@ namespace osu.Game.Graphics.UserInterface protected override void LoadComplete() { base.LoadComplete(); - circle.FadeIn(500, EasingTypes.OutQuint); - circle.ResizeTo(new Vector2(0.8f), 500, EasingTypes.OutQuint); + circle.FadeIn(500, Easing.OutQuint); + circle.ResizeTo(new Vector2(0.8f), 500, Easing.OutQuint); } } } diff --git a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs index 673a23afac..3dd3596c30 100644 --- a/osu.Game/Graphics/UserInterface/OsuSliderBar.cs +++ b/osu.Game/Graphics/UserInterface/OsuSliderBar.cs @@ -166,7 +166,7 @@ namespace osu.Game.Graphics.UserInterface protected override void UpdateValue(float value) { - Nub.MoveToX(RangePadding + UsableWidth * value, 250, EasingTypes.OutQuint); + Nub.MoveToX(RangePadding + UsableWidth * value, 250, Easing.OutQuint); } } } diff --git a/osu.Game/Graphics/UserInterface/OsuTabControl.cs b/osu.Game/Graphics/UserInterface/OsuTabControl.cs index 602aee3c58..8c16c048ea 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControl.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControl.cs @@ -77,14 +77,14 @@ namespace osu.Game.Graphics.UserInterface private void fadeActive() { - box.FadeIn(transition_length, EasingTypes.OutQuint); - Text.FadeColour(Color4.White, transition_length, EasingTypes.OutQuint); + box.FadeIn(transition_length, Easing.OutQuint); + Text.FadeColour(Color4.White, transition_length, Easing.OutQuint); } private void fadeInactive() { - box.FadeOut(transition_length, EasingTypes.OutQuint); - Text.FadeColour(AccentColour, transition_length, EasingTypes.OutQuint); + box.FadeOut(transition_length, Easing.OutQuint); + Text.FadeColour(AccentColour, transition_length, Easing.OutQuint); } protected override bool OnHover(InputState state) diff --git a/osu.Game/Graphics/UserInterface/OsuTabControlCheckbox.cs b/osu.Game/Graphics/UserInterface/OsuTabControlCheckbox.cs index 940d9b4943..57a87dc74b 100644 --- a/osu.Game/Graphics/UserInterface/OsuTabControlCheckbox.cs +++ b/osu.Game/Graphics/UserInterface/OsuTabControlCheckbox.cs @@ -49,14 +49,14 @@ namespace osu.Game.Graphics.UserInterface private void fadeIn() { - box.FadeIn(transition_length, EasingTypes.OutQuint); - text.FadeColour(Color4.White, transition_length, EasingTypes.OutQuint); + box.FadeIn(transition_length, Easing.OutQuint); + text.FadeColour(Color4.White, transition_length, Easing.OutQuint); } private void fadeOut() { - box.FadeOut(transition_length, EasingTypes.OutQuint); - text.FadeColour(AccentColour, transition_length, EasingTypes.OutQuint); + box.FadeOut(transition_length, Easing.OutQuint); + text.FadeColour(AccentColour, transition_length, Easing.OutQuint); } protected override bool OnHover(InputState state) diff --git a/osu.Game/Graphics/UserInterface/PercentageCounter.cs b/osu.Game/Graphics/UserInterface/PercentageCounter.cs index b51dd2287b..0a402f9045 100644 --- a/osu.Game/Graphics/UserInterface/PercentageCounter.cs +++ b/osu.Game/Graphics/UserInterface/PercentageCounter.cs @@ -1,9 +1,6 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework.Graphics; -using osu.Framework.Graphics.Transforms; -using osu.Framework.MathUtils; using System; namespace osu.Game.Graphics.UserInterface @@ -13,8 +10,6 @@ namespace osu.Game.Graphics.UserInterface /// public class PercentageCounter : RollingCounter { - protected override Type TransformType => typeof(TransformAccuracy); - protected override double RollingDuration => 750; private float epsilon => 1e-10f; @@ -44,23 +39,5 @@ namespace osu.Game.Graphics.UserInterface { Current.Value = Current + amount; } - - protected class TransformAccuracy : Transform - { - public virtual double CurrentValue - { - get - { - double time = Time?.Current ?? 0; - if (time < StartTime) return StartValue; - if (time >= EndTime) return EndValue; - - return Interpolation.ValueAt(time, (float)StartValue, (float)EndValue, StartTime, EndTime, Easing); - } - } - - public override void Apply(Drawable d) => ((PercentageCounter)d).DisplayedCount = CurrentValue; - public override void ReadIntoStartValue(Drawable d) => StartValue = ((PercentageCounter)d).DisplayedCount; - } } } diff --git a/osu.Game/Graphics/UserInterface/RollingCounter.cs b/osu.Game/Graphics/UserInterface/RollingCounter.cs index db6e6ff44f..ce8d190dc0 100644 --- a/osu.Game/Graphics/UserInterface/RollingCounter.cs +++ b/osu.Game/Graphics/UserInterface/RollingCounter.cs @@ -5,30 +5,21 @@ using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; -using osu.Framework.Graphics.Transforms; using osu.Game.Graphics.Sprites; using System; using System.Collections.Generic; -using System.Diagnostics; using OpenTK.Graphics; namespace osu.Game.Graphics.UserInterface { public abstract class RollingCounter : Container, IHasAccentColour + where T : struct, IEquatable { /// /// The current value. /// public Bindable Current = new Bindable(); - /// - /// Type of the Transform to use. - /// - /// - /// Must be a subclass of Transform(T) - /// - protected virtual Type TransformType => typeof(Transform); - protected SpriteText DisplayedCountSpriteText; /// @@ -45,7 +36,7 @@ namespace osu.Game.Graphics.UserInterface /// /// Easing for the counter rollover animation. /// - protected virtual EasingTypes RollingEasing => EasingTypes.OutQuint; + protected virtual Easing RollingEasing => Easing.OutQuint; private T displayedCount; @@ -58,7 +49,8 @@ namespace osu.Game.Graphics.UserInterface { return displayedCount; } - protected set + + set { if (EqualityComparer.Default.Equals(displayedCount, value)) return; @@ -133,7 +125,7 @@ namespace osu.Game.Graphics.UserInterface /// public virtual void StopRolling() { - Flush(false, TransformType); + FinishTransforms(false, nameof(DisplayedCount)); DisplayedCount = Current; } @@ -176,44 +168,15 @@ namespace osu.Game.Graphics.UserInterface /// implement the rollover animation). /// /// Count value before modification. - /// Expected count value after modification- - /// + /// Expected count value after modification. protected virtual void TransformCount(T currentValue, T newValue) { - Debug.Assert( - typeof(Transform).IsAssignableFrom(TransformType), - @"transformType should be a subclass of Transform." - ); - - TransformCount((Transform)Activator.CreateInstance(TransformType), currentValue, newValue); - } - - /// - /// Intended to be used by TransformCount(T currentValue, T newValue). - /// - protected void TransformCount(Transform transform, T currentValue, T newValue) - { - Type type = transform.GetType(); - - Flush(false, type); - - if (RollingDuration < 1) - { - DisplayedCount = Current; - return; - } - double rollingTotalDuration = IsRollingProportional ? GetProportionalDuration(currentValue, newValue) : RollingDuration; - transform.StartTime = TransformStartTime; - transform.EndTime = TransformStartTime + rollingTotalDuration; - transform.EndValue = newValue; - transform.Easing = RollingEasing; - - Transforms.Add(transform); + this.TransformTo(nameof(DisplayedCount), newValue, rollingTotalDuration, RollingEasing); } } } diff --git a/osu.Game/Graphics/UserInterface/ScoreCounter.cs b/osu.Game/Graphics/UserInterface/ScoreCounter.cs index 6fe43e1fcc..ee4fc912f3 100644 --- a/osu.Game/Graphics/UserInterface/ScoreCounter.cs +++ b/osu.Game/Graphics/UserInterface/ScoreCounter.cs @@ -2,18 +2,13 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.Graphics; -using osu.Framework.Graphics.Transforms; -using osu.Framework.MathUtils; -using System; namespace osu.Game.Graphics.UserInterface { public class ScoreCounter : RollingCounter { - protected override Type TransformType => typeof(TransformScore); - protected override double RollingDuration => 1000; - protected override EasingTypes RollingEasing => EasingTypes.Out; + protected override Easing RollingEasing => Easing.Out; public bool UseCommaSeparator; @@ -55,23 +50,5 @@ namespace osu.Game.Graphics.UserInterface { Current.Value = Current + amount; } - - protected class TransformScore : Transform - { - public virtual double CurrentValue - { - get - { - double time = Time?.Current ?? 0; - if (time < StartTime) return StartValue; - if (time >= EndTime) return EndValue; - - return Interpolation.ValueAt(time, (float)StartValue, (float)EndValue, StartTime, EndTime, Easing); - } - } - - public override void Apply(Drawable d) => ((ScoreCounter)d).DisplayedCount = CurrentValue; - public override void ReadIntoStartValue(Drawable d) => StartValue = ((ScoreCounter)d).DisplayedCount; - } } } diff --git a/osu.Game/Graphics/UserInterface/SimpleComboCounter.cs b/osu.Game/Graphics/UserInterface/SimpleComboCounter.cs index 7664eeee40..211de72efc 100644 --- a/osu.Game/Graphics/UserInterface/SimpleComboCounter.cs +++ b/osu.Game/Graphics/UserInterface/SimpleComboCounter.cs @@ -2,9 +2,6 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Transforms; -using osu.Framework.MathUtils; namespace osu.Game.Graphics.UserInterface { @@ -13,8 +10,6 @@ namespace osu.Game.Graphics.UserInterface /// public class SimpleComboCounter : RollingCounter { - protected override Type TransformType => typeof(TransformCounterCount); - protected override double RollingDuration => 750; public SimpleComboCounter() @@ -36,23 +31,5 @@ namespace osu.Game.Graphics.UserInterface { Current.Value = Current + amount; } - - private class TransformCounterCount : Transform - { - public int CurrentValue - { - get - { - double time = Time?.Current ?? 0; - if (time < StartTime) return StartValue; - if (time >= EndTime) return EndValue; - - return (int)Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing); - } - } - - public override void Apply(Drawable d) => ((SimpleComboCounter)d).DisplayedCount = CurrentValue; - public override void ReadIntoStartValue(Drawable d) => StartValue = ((SimpleComboCounter)d).DisplayedCount; - } } } \ No newline at end of file diff --git a/osu.Game/Graphics/UserInterface/StarCounter.cs b/osu.Game/Graphics/UserInterface/StarCounter.cs index 490ea6e64a..6c5204fed4 100644 --- a/osu.Game/Graphics/UserInterface/StarCounter.cs +++ b/osu.Game/Graphics/UserInterface/StarCounter.cs @@ -24,7 +24,7 @@ namespace osu.Game.Graphics.UserInterface private double animationDelay => 80; private double scalingDuration => 1000; - private EasingTypes scalingEasing => EasingTypes.OutElasticHalf; + private Easing scalingEasing => Easing.OutElasticHalf; private float minStarScale => 0.4f; private double fadingDuration => 100; @@ -122,7 +122,7 @@ namespace osu.Game.Graphics.UserInterface if (value <= i) return minStarScale; - return i + 1 <= value ? 1.0f : (float)Interpolation.ValueAt(value, minStarScale, 1.0f, i, i + 1); + return i + 1 <= value ? 1.0f : Interpolation.ValueAt(value, minStarScale, 1.0f, i, i + 1); } private void transformCount(float newValue) @@ -133,12 +133,8 @@ namespace osu.Game.Graphics.UserInterface star.ClearTransforms(true); var delay = (countStars <= newValue ? Math.Max(i - countStars, 0) : Math.Max(countStars - 1 - i, 0)) * animationDelay; - - using (BeginDelayedSequence(delay, true)) - { - star.FadeTo(i < newValue ? 1.0f : minStarAlpha, fadingDuration); - star.Icon.ScaleTo(getStarScale(i, newValue), scalingDuration, scalingEasing); - } + star.Delay(delay).FadeTo(i < newValue ? 1.0f : minStarAlpha, fadingDuration); + star.Icon.Delay(delay).ScaleTo(getStarScale(i, newValue), scalingDuration, scalingEasing); i++; } diff --git a/osu.Game/Graphics/UserInterface/TwoLayerButton.cs b/osu.Game/Graphics/UserInterface/TwoLayerButton.cs index 7f2bbb8f9f..f290f4fadd 100644 --- a/osu.Game/Graphics/UserInterface/TwoLayerButton.cs +++ b/osu.Game/Graphics/UserInterface/TwoLayerButton.cs @@ -173,20 +173,20 @@ namespace osu.Game.Graphics.UserInterface protected override bool OnHover(InputState state) { - ResizeTo(SIZE_EXTENDED, transform_time, EasingTypes.OutElastic); - IconLayer.FadeColour(HoverColour, transform_time, EasingTypes.OutElastic); + this.ResizeTo(SIZE_EXTENDED, transform_time, Easing.OutElastic); + IconLayer.FadeColour(HoverColour, transform_time, Easing.OutElastic); - bouncingIcon.ScaleTo(1.1f, transform_time, EasingTypes.OutElastic); + bouncingIcon.ScaleTo(1.1f, transform_time, Easing.OutElastic); return true; } protected override void OnHoverLost(InputState state) { - ResizeTo(SIZE_RETRACTED, transform_time, EasingTypes.OutElastic); - IconLayer.FadeColour(TextLayer.Colour, transform_time, EasingTypes.OutElastic); + this.ResizeTo(SIZE_RETRACTED, transform_time, Easing.OutElastic); + IconLayer.FadeColour(TextLayer.Colour, transform_time, Easing.OutElastic); - bouncingIcon.ScaleTo(1, transform_time, EasingTypes.OutElastic); + bouncingIcon.ScaleTo(1, transform_time, Easing.OutElastic); } protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) @@ -205,7 +205,7 @@ namespace osu.Game.Graphics.UserInterface Add(flash); flash.Alpha = 1; - flash.FadeOut(500, EasingTypes.OutQuint); + flash.FadeOut(500, Easing.OutQuint); flash.Expire(); return base.OnClick(state); @@ -245,9 +245,9 @@ namespace osu.Game.Graphics.UserInterface if (beatIndex < 0) return; - icon.ScaleTo(1 - 0.1f * amplitudeAdjust, beat_in_time, EasingTypes.Out); - using (icon.BeginDelayedSequence(beat_in_time)) - icon.ScaleTo(1, beatLength * 2, EasingTypes.OutQuint); + icon.ScaleTo(1 - 0.1f * amplitudeAdjust, beat_in_time, Easing.Out) + .Then() + .ScaleTo(1, beatLength * 2, Easing.OutQuint); } } } diff --git a/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs b/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs index a758d5fdef..fa192b0825 100644 --- a/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs +++ b/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs @@ -93,21 +93,20 @@ namespace osu.Game.Graphics.UserInterface.Volume protected override void PopIn() { ClearTransforms(); - FadeIn(100); + this.FadeIn(100); schedulePopOut(); } protected override void PopOut() { - FadeOut(100); + this.FadeOut(100); } private void schedulePopOut() { popOutDelegate?.Cancel(); - Delay(1000); - popOutDelegate = Schedule(Hide); + this.Delay(1000).Schedule(Hide, out popOutDelegate); } } } \ No newline at end of file diff --git a/osu.Game/Graphics/UserInterface/Volume/VolumeMeter.cs b/osu.Game/Graphics/UserInterface/Volume/VolumeMeter.cs index 57eea71086..41fa60bec2 100644 --- a/osu.Game/Graphics/UserInterface/Volume/VolumeMeter.cs +++ b/osu.Game/Graphics/UserInterface/Volume/VolumeMeter.cs @@ -82,6 +82,6 @@ namespace osu.Game.Graphics.UserInterface.Volume return true; } - private void updateFill() => meterFill.ScaleTo(new Vector2(1, (float)Volume), 300, EasingTypes.OutQuint); + private void updateFill() => meterFill.ScaleTo(new Vector2(1, (float)Volume), 300, Easing.OutQuint); } } \ No newline at end of file diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index b9375c7f36..cd3d6ab7a0 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -80,6 +80,11 @@ namespace osu.Game public void ToggleDirect() => direct.ToggleVisibility(); + private DependencyContainer dependencies; + + protected override IReadOnlyDependencyContainer CreateLocalDependencies(IReadOnlyDependencyContainer parent) => + dependencies = new DependencyContainer(base.CreateLocalDependencies(parent)); + [BackgroundDependencyLoader] private void load(FrameworkConfigManager frameworkConfig) { @@ -97,7 +102,7 @@ namespace osu.Game Task.Run(() => BeatmapDatabase.Import(paths.ToArray())); } - Dependencies.Cache(this); + dependencies.Cache(this); configRuleset = LocalConfig.GetBindable(OsuSetting.Ruleset); Ruleset.Value = RulesetDatabase.GetRuleset(configRuleset.Value); @@ -121,8 +126,7 @@ namespace osu.Game if (!menu.IsCurrentScreen) { menu.MakeCurrent(); - Delay(500); - scoreLoad = Schedule(() => LoadScore(s)); + this.Delay(500).Schedule(() => LoadScore(s), out scoreLoad); return; } @@ -208,13 +212,13 @@ namespace osu.Game }); }; - Dependencies.Cache(settings); - Dependencies.Cache(social); - Dependencies.Cache(chat); - Dependencies.Cache(userProfile); - Dependencies.Cache(musicController); - Dependencies.Cache(notificationManager); - Dependencies.Cache(dialogOverlay); + dependencies.Cache(settings); + dependencies.Cache(social); + dependencies.Cache(chat); + dependencies.Cache(userProfile); + dependencies.Cache(musicController); + dependencies.Cache(notificationManager); + dependencies.Cache(dialogOverlay); // ensure both overlays aren't presented at the same time chat.StateChanged += (container, state) => social.State = state == Visibility.Visible ? Visibility.Hidden : social.State; @@ -231,10 +235,10 @@ namespace osu.Game switch (settings.State) { case Visibility.Hidden: - intro.MoveToX(0, SettingsOverlay.TRANSITION_LENGTH, EasingTypes.OutQuint); + intro.MoveToX(0, SettingsOverlay.TRANSITION_LENGTH, Easing.OutQuint); break; case Visibility.Visible: - intro.MoveToX(SettingsOverlay.SIDEBAR_WIDTH / 2, SettingsOverlay.TRANSITION_LENGTH, EasingTypes.OutQuint); + intro.MoveToX(SettingsOverlay.SIDEBAR_WIDTH / 2, SettingsOverlay.TRANSITION_LENGTH, Easing.OutQuint); break; } }; diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 7a2d91d733..27ad4f20f9 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -81,21 +81,26 @@ namespace osu.Game Name = @"osu!lazer"; } + private DependencyContainer dependencies; + + protected override IReadOnlyDependencyContainer CreateLocalDependencies(IReadOnlyDependencyContainer parent) => + dependencies = new DependencyContainer(base.CreateLocalDependencies(parent)); + [BackgroundDependencyLoader] private void load() { - Dependencies.Cache(this); - Dependencies.Cache(LocalConfig); + dependencies.Cache(this); + dependencies.Cache(LocalConfig); SQLiteConnection connection = Host.Storage.GetDatabase(@"client"); - Dependencies.Cache(RulesetDatabase = new RulesetDatabase(Host.Storage, connection)); - Dependencies.Cache(BeatmapDatabase = new BeatmapDatabase(Host.Storage, connection, RulesetDatabase, Host)); - Dependencies.Cache(ScoreDatabase = new ScoreDatabase(Host.Storage, connection, Host, BeatmapDatabase)); - Dependencies.Cache(new OsuColour()); + dependencies.Cache(RulesetDatabase = new RulesetDatabase(Host.Storage, connection)); + dependencies.Cache(BeatmapDatabase = new BeatmapDatabase(Host.Storage, connection, RulesetDatabase, Host)); + dependencies.Cache(ScoreDatabase = new ScoreDatabase(Host.Storage, connection, Host, BeatmapDatabase)); + dependencies.Cache(new OsuColour()); //this completely overrides the framework default. will need to change once we make a proper FontStore. - Dependencies.Cache(Fonts = new FontStore { ScaleAdjust = 100 }, true); + dependencies.Cache(Fonts = new FontStore { ScaleAdjust = 100 }, true); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/FontAwesome")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/osuFont")); @@ -127,7 +132,7 @@ namespace osu.Game OszArchiveReader.Register(); - Dependencies.Cache(API = new APIAccess + dependencies.Cache(API = new APIAccess { Username = LocalConfig.Get(OsuSetting.Username), Token = LocalConfig.Get(OsuSetting.Token) diff --git a/osu.Game/Overlays/Chat/ChannelListItem.cs b/osu.Game/Overlays/Chat/ChannelListItem.cs index aca65bbc17..791377187b 100644 --- a/osu.Game/Overlays/Chat/ChannelListItem.cs +++ b/osu.Game/Overlays/Chat/ChannelListItem.cs @@ -39,7 +39,7 @@ namespace osu.Game.Overlays.Chat { set { - FadeTo(value ? 1f : 0f, 100); + this.FadeTo(value ? 1f : 0f, 100); } } @@ -156,7 +156,7 @@ namespace osu.Game.Overlays.Chat protected override bool OnHover(InputState state) { if (!channel.Joined.Value) - name.FadeColour(hoverColour, 50, EasingTypes.OutQuint); + name.FadeColour(hoverColour, 50, Easing.OutQuint); return base.OnHover(state); } @@ -175,14 +175,14 @@ namespace osu.Game.Overlays.Chat joinedCheckmark.FadeTo(1f, transition_duration); topic.FadeTo(0.8f, transition_duration); topic.FadeColour(Color4.White, transition_duration); - FadeColour(joinedColour, transition_duration); + this.FadeColour(joinedColour, transition_duration); } else { joinedCheckmark.FadeTo(0f, transition_duration); topic.FadeTo(1f, transition_duration); topic.FadeColour(topicColour, transition_duration); - FadeColour(Color4.White, transition_duration); + this.FadeColour(Color4.White, transition_duration); } } } diff --git a/osu.Game/Overlays/Chat/ChannelSection.cs b/osu.Game/Overlays/Chat/ChannelSection.cs index cafb88b6ac..1f046aff2a 100644 --- a/osu.Game/Overlays/Chat/ChannelSection.cs +++ b/osu.Game/Overlays/Chat/ChannelSection.cs @@ -23,7 +23,7 @@ namespace osu.Game.Overlays.Chat { set { - FadeTo(value ? 1f : 0f, 100); + this.FadeTo(value ? 1f : 0f, 100); } } diff --git a/osu.Game/Overlays/Chat/ChannelSelectionOverlay.cs b/osu.Game/Overlays/Chat/ChannelSelectionOverlay.cs index 135f8f43b9..368d3cc5ef 100644 --- a/osu.Game/Overlays/Chat/ChannelSelectionOverlay.cs +++ b/osu.Game/Overlays/Chat/ChannelSelectionOverlay.cs @@ -92,7 +92,7 @@ namespace osu.Game.Overlays.Chat AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, LayoutDuration = 200, - LayoutEasing = EasingTypes.OutQuint, + LayoutEasing = Easing.OutQuint, Spacing = new Vector2(0f, 20f), Padding = new MarginPadding { Vertical = 20, Left = WIDTH_PADDING }, }, @@ -158,10 +158,10 @@ namespace osu.Game.Overlays.Chat protected override void PopIn() { - if (Alpha == 0) MoveToY(DrawHeight); + if (Alpha == 0) this.MoveToY(DrawHeight); - FadeIn(transition_duration, EasingTypes.OutQuint); - MoveToY(0, transition_duration, EasingTypes.OutQuint); + this.FadeIn(transition_duration, Easing.OutQuint); + this.MoveToY(0, transition_duration, Easing.OutQuint); search.HoldFocus = true; base.PopIn(); @@ -169,8 +169,8 @@ namespace osu.Game.Overlays.Chat protected override void PopOut() { - FadeOut(transition_duration, EasingTypes.InSine); - MoveToY(DrawHeight, transition_duration, EasingTypes.InSine); + this.FadeOut(transition_duration, Easing.InSine); + this.MoveToY(DrawHeight, transition_duration, Easing.InSine); search.HoldFocus = false; base.PopOut(); diff --git a/osu.Game/Overlays/Chat/ChatLine.cs b/osu.Game/Overlays/Chat/ChatLine.cs index c08e62428b..809e771840 100644 --- a/osu.Game/Overlays/Chat/ChatLine.cs +++ b/osu.Game/Overlays/Chat/ChatLine.cs @@ -78,7 +78,7 @@ namespace osu.Game.Overlays.Chat Padding = new MarginPadding { Left = padding, Right = padding }; } - [BackgroundDependencyLoader] + [BackgroundDependencyLoader(true)] private void load(OsuColour colours, UserProfileOverlay profile) { customUsernameColour = colours.ChatBlue; diff --git a/osu.Game/Overlays/Chat/ChatTabControl.cs b/osu.Game/Overlays/Chat/ChatTabControl.cs index 92147db57f..c3c930eba0 100644 --- a/osu.Game/Overlays/Chat/ChatTabControl.cs +++ b/osu.Game/Overlays/Chat/ChatTabControl.cs @@ -86,30 +86,30 @@ namespace osu.Game.Overlays.Chat private void fadeActive() { - ResizeTo(new Vector2(Width, 1.1f), transition_length, EasingTypes.OutQuint); + this.ResizeTo(new Vector2(Width, 1.1f), transition_length, Easing.OutQuint); - box.FadeColour(backgroundActive, transition_length, EasingTypes.OutQuint); - highlightBox.FadeIn(transition_length, EasingTypes.OutQuint); + box.FadeColour(backgroundActive, transition_length, Easing.OutQuint); + highlightBox.FadeIn(transition_length, Easing.OutQuint); - text.FadeOut(transition_length, EasingTypes.OutQuint); - textBold.FadeIn(transition_length, EasingTypes.OutQuint); + text.FadeOut(transition_length, Easing.OutQuint); + textBold.FadeIn(transition_length, Easing.OutQuint); } private void fadeInactive() { - ResizeTo(new Vector2(Width, 1), transition_length, EasingTypes.OutQuint); + this.ResizeTo(new Vector2(Width, 1), transition_length, Easing.OutQuint); - box.FadeColour(backgroundInactive, transition_length, EasingTypes.OutQuint); - highlightBox.FadeOut(transition_length, EasingTypes.OutQuint); + box.FadeColour(backgroundInactive, transition_length, Easing.OutQuint); + highlightBox.FadeOut(transition_length, Easing.OutQuint); - text.FadeIn(transition_length, EasingTypes.OutQuint); - textBold.FadeOut(transition_length, EasingTypes.OutQuint); + text.FadeIn(transition_length, Easing.OutQuint); + textBold.FadeOut(transition_length, Easing.OutQuint); } protected override bool OnHover(InputState state) { if (!Active) - box.FadeColour(backgroundHover, transition_length, EasingTypes.OutQuint); + box.FadeColour(backgroundHover, transition_length, Easing.OutQuint); return true; } diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 1f9f7e57ca..53d926fb4f 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -177,8 +177,8 @@ namespace osu.Game.Overlays inputTextBox.HoldFocus = false; if (1f - chatHeight.Value < channel_selection_min_height) { - chatContainer.ResizeHeightTo(1f - channel_selection_min_height, 800, EasingTypes.OutQuint); - channelSelectionContainer.ResizeHeightTo(channel_selection_min_height, 800, EasingTypes.OutQuint); + chatContainer.ResizeHeightTo(1f - channel_selection_min_height, 800, Easing.OutQuint); + channelSelectionContainer.ResizeHeightTo(channel_selection_min_height, 800, Easing.OutQuint); channelSelection.Show(); chatHeight.Value = 1f - channel_selection_min_height; } @@ -235,8 +235,8 @@ namespace osu.Game.Overlays protected override void PopIn() { - MoveToY(0, transition_length, EasingTypes.OutQuint); - FadeIn(transition_length, EasingTypes.OutQuint); + this.MoveToY(0, transition_length, Easing.OutQuint); + this.FadeIn(transition_length, Easing.OutQuint); inputTextBox.HoldFocus = true; base.PopIn(); @@ -244,8 +244,8 @@ namespace osu.Game.Overlays protected override void PopOut() { - MoveToY(Height, transition_length, EasingTypes.InSine); - FadeOut(transition_length, EasingTypes.InSine); + this.MoveToY(Height, transition_length, Easing.InSine); + this.FadeOut(transition_length, Easing.InSine); inputTextBox.HoldFocus = false; base.PopOut(); @@ -328,7 +328,7 @@ namespace osu.Game.Overlays var loaded = loadedChannels.Find(d => d.Channel == value); if (loaded == null) { - currentChannelContainer.FadeOut(500, EasingTypes.OutQuint); + currentChannelContainer.FadeOut(500, Easing.OutQuint); loading.Show(); loaded = new DrawableChannel(currentChannel); @@ -340,7 +340,7 @@ namespace osu.Game.Overlays currentChannelContainer.Clear(false); currentChannelContainer.Add(loaded); - currentChannelContainer.FadeIn(500, EasingTypes.OutQuint); + currentChannelContainer.FadeIn(500, Easing.OutQuint); }); } else diff --git a/osu.Game/Overlays/Dialog/PopupDialog.cs b/osu.Game/Overlays/Dialog/PopupDialog.cs index 39338ba3e1..97aae2f49c 100644 --- a/osu.Game/Overlays/Dialog/PopupDialog.cs +++ b/osu.Game/Overlays/Dialog/PopupDialog.cs @@ -115,17 +115,17 @@ namespace osu.Game.Overlays.Dialog ring.ResizeTo(ringMinifiedSize); } - content.FadeIn(ENTER_DURATION, EasingTypes.OutQuint); - ring.ResizeTo(ringSize, ENTER_DURATION, EasingTypes.OutQuint); - buttonsContainer.TransformSpacingTo(Vector2.Zero, ENTER_DURATION, EasingTypes.OutQuint); - buttonsContainer.MoveToY(0, ENTER_DURATION, EasingTypes.OutQuint); + content.FadeIn(ENTER_DURATION, Easing.OutQuint); + ring.ResizeTo(ringSize, ENTER_DURATION, Easing.OutQuint); + buttonsContainer.TransformSpacingTo(Vector2.Zero, ENTER_DURATION, Easing.OutQuint); + buttonsContainer.MoveToY(0, ENTER_DURATION, Easing.OutQuint); } protected override void PopOut() { base.PopOut(); - content.FadeOut(EXIT_DURATION, EasingTypes.InSine); + content.FadeOut(EXIT_DURATION, Easing.InSine); } public PopupDialog() diff --git a/osu.Game/Overlays/DialogOverlay.cs b/osu.Game/Overlays/DialogOverlay.cs index f1a6bc1681..012e93f10d 100644 --- a/osu.Game/Overlays/DialogOverlay.cs +++ b/osu.Game/Overlays/DialogOverlay.cs @@ -35,8 +35,7 @@ namespace osu.Game.Overlays if (v != Visibility.Hidden) return; //handle the dialog being dismissed. - dialog.Delay(PopupDialog.EXIT_DURATION); - dialog.Expire(); + dialog.Delay(PopupDialog.EXIT_DURATION).Expire(); if (dialog == currentDialog) State = Visibility.Hidden; @@ -45,13 +44,13 @@ namespace osu.Game.Overlays protected override void PopIn() { base.PopIn(); - FadeIn(PopupDialog.ENTER_DURATION, EasingTypes.OutQuint); + this.FadeIn(PopupDialog.ENTER_DURATION, Easing.OutQuint); } protected override void PopOut() { base.PopOut(); - FadeOut(PopupDialog.EXIT_DURATION, EasingTypes.InSine); + this.FadeOut(PopupDialog.EXIT_DURATION, Easing.InSine); } public DialogOverlay() diff --git a/osu.Game/Overlays/Direct/DirectGridPanel.cs b/osu.Game/Overlays/Direct/DirectGridPanel.cs index 3c464af05d..b7631d5794 100644 --- a/osu.Game/Overlays/Direct/DirectGridPanel.cs +++ b/osu.Game/Overlays/Direct/DirectGridPanel.cs @@ -41,9 +41,9 @@ namespace osu.Game.Overlays.Direct { base.LoadComplete(); - FadeInFromZero(200, EasingTypes.Out); + this.FadeInFromZero(200, Easing.Out); bottomPanel.LayoutDuration = 200; - bottomPanel.LayoutEasing = EasingTypes.Out; + bottomPanel.LayoutEasing = Easing.Out; bottomPanel.Origin = Anchor.BottomLeft; } diff --git a/osu.Game/Overlays/Direct/DirectListPanel.cs b/osu.Game/Overlays/Direct/DirectListPanel.cs index f693998563..8319270b8e 100644 --- a/osu.Game/Overlays/Direct/DirectListPanel.cs +++ b/osu.Game/Overlays/Direct/DirectListPanel.cs @@ -43,7 +43,7 @@ namespace osu.Game.Overlays.Direct { base.LoadComplete(); - FadeInFromZero(200, EasingTypes.Out); + this.FadeInFromZero(200, Easing.Out); } [BackgroundDependencyLoader] @@ -171,25 +171,25 @@ namespace osu.Game.Overlays.Direct protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) { - icon.ScaleTo(0.9f, 1000, EasingTypes.Out); + icon.ScaleTo(0.9f, 1000, Easing.Out); return base.OnMouseDown(state, args); } protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) { - icon.ScaleTo(1f, 500, EasingTypes.OutElastic); + icon.ScaleTo(1f, 500, Easing.OutElastic); return base.OnMouseUp(state, args); } protected override bool OnHover(InputState state) { - icon.ScaleTo(1.1f, 500, EasingTypes.OutElastic); + icon.ScaleTo(1.1f, 500, Easing.OutElastic); return base.OnHover(state); } protected override void OnHoverLost(InputState state) { - icon.ScaleTo(1f, 500, EasingTypes.OutElastic); + icon.ScaleTo(1f, 500, Easing.OutElastic); } } } diff --git a/osu.Game/Overlays/Direct/DirectPanel.cs b/osu.Game/Overlays/Direct/DirectPanel.cs index 4fc9a922a8..09b634de81 100644 --- a/osu.Game/Overlays/Direct/DirectPanel.cs +++ b/osu.Game/Overlays/Direct/DirectPanel.cs @@ -38,7 +38,7 @@ namespace osu.Game.Overlays.Direct Origin = Anchor.Centre, RelativeSizeAxes = Axes.Both, FillMode = FillMode.Fill, - OnLoadComplete = d => d.FadeInFromZero(400, EasingTypes.Out), + OnLoadComplete = d => d.FadeInFromZero(400, Easing.Out), }) { RelativeSizeAxes = Axes.Both, diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs index 5fa90ab1d6..f10d542830 100644 --- a/osu.Game/Overlays/DirectOverlay.cs +++ b/osu.Game/Overlays/DirectOverlay.cs @@ -169,7 +169,7 @@ namespace osu.Game.Overlays private void updateResultCounts() { - resultCountsContainer.FadeTo(ResultAmounts == null ? 0f : 1f, 200, EasingTypes.OutQuint); + resultCountsContainer.FadeTo(ResultAmounts == null ? 0f : 1f, 200, Easing.OutQuint); if (ResultAmounts == null) return; resultCountsText.Text = pluralize("Artist", ResultAmounts.Artists) + ", " + diff --git a/osu.Game/Overlays/LoginOverlay.cs b/osu.Game/Overlays/LoginOverlay.cs index d9d5a44fd5..95e0fef9aa 100644 --- a/osu.Game/Overlays/LoginOverlay.cs +++ b/osu.Game/Overlays/LoginOverlay.cs @@ -40,7 +40,7 @@ namespace osu.Game.Overlays AutoSizeAxes = Axes.Y, Masking = true, AutoSizeDuration = transition_time, - AutoSizeEasing = EasingTypes.OutQuint, + AutoSizeEasing = Easing.OutQuint, Children = new Drawable[] { settingsSection = new LoginSettings @@ -67,7 +67,7 @@ namespace osu.Game.Overlays base.PopIn(); settingsSection.Bounding = true; - FadeIn(transition_time, EasingTypes.OutQuint); + this.FadeIn(transition_time, Easing.OutQuint); InputManager.ChangeFocus(settingsSection); } @@ -77,7 +77,7 @@ namespace osu.Game.Overlays base.PopOut(); settingsSection.Bounding = false; - FadeOut(transition_time); + this.FadeOut(transition_time); } } } diff --git a/osu.Game/Overlays/MedalOverlay.cs b/osu.Game/Overlays/MedalOverlay.cs index 5f85474ede..064f42ecaf 100644 --- a/osu.Game/Overlays/MedalOverlay.cs +++ b/osu.Game/Overlays/MedalOverlay.cs @@ -194,38 +194,43 @@ namespace osu.Game.Overlays { base.PopIn(); - FadeIn(200); + this.FadeIn(200); background.FlashColour(Color4.White.Opacity(0.25f), 400); getSample.Play(); - using (innerSpin.BeginLoopedSequence()) - innerSpin.RotateTo(360, 20000); - - using (outerSpin.BeginLoopedSequence()) - outerSpin.RotateTo(360, 40000); + innerSpin.Spin(20000, RotationDirection.Clockwise); + outerSpin.Spin(40000, RotationDirection.Clockwise); using (BeginDelayedSequence(200, true)) { - disc.FadeIn(initial_duration); + disc.FadeIn(initial_duration) + .ScaleTo(1f, initial_duration * 2, Easing.OutElastic); + particleContainer.FadeIn(initial_duration); outerSpin.FadeTo(0.1f, initial_duration * 2); - disc.ScaleTo(1f, initial_duration * 2, EasingTypes.OutElastic); using (BeginDelayedSequence(initial_duration + 200, true)) { backgroundStrip.FadeIn(step_duration); - leftStrip.ResizeWidthTo(1f, step_duration, EasingTypes.OutQuint); - rightStrip.ResizeWidthTo(1f, step_duration, EasingTypes.OutQuint); - Schedule(() => { if (drawableMedal.State != DisplayState.Full) drawableMedal.State = DisplayState.Icon; }); + leftStrip.ResizeWidthTo(1f, step_duration, Easing.OutQuint); + rightStrip.ResizeWidthTo(1f, step_duration, Easing.OutQuint); - using (BeginDelayedSequence(step_duration, true)) + this.Animate().Schedule(() => { - Schedule(() => { if (drawableMedal.State != DisplayState.Full) drawableMedal.State = DisplayState.MedalUnlocked; }); - - using (BeginDelayedSequence(step_duration, true)) - Schedule(() => { if (drawableMedal.State != DisplayState.Full) drawableMedal.State = DisplayState.Full; }); - } + if (drawableMedal.State != DisplayState.Full) + drawableMedal.State = DisplayState.Icon; + }) + .Delay(step_duration).Schedule(() => + { + if (drawableMedal.State != DisplayState.Full) + drawableMedal.State = DisplayState.MedalUnlocked; + }) + .Delay(step_duration).Schedule(() => + { + if (drawableMedal.State != DisplayState.Full) + drawableMedal.State = DisplayState.Full; + }); } } } @@ -233,7 +238,7 @@ namespace osu.Game.Overlays protected override void PopOut() { base.PopOut(); - FadeOut(200); + this.FadeOut(200); } private void dismiss() @@ -242,7 +247,7 @@ namespace osu.Game.Overlays { // if we haven't yet, play out the animation fully drawableMedal.State = DisplayState.Full; - Flush(true); + FinishTransforms(true); return; } @@ -295,8 +300,8 @@ namespace osu.Game.Overlays Radius = 5, }; - MoveTo(positionForOffset(DISC_SIZE / 2 + 200), 500); - FadeOut(500); + this.MoveTo(positionForOffset(DISC_SIZE / 2 + 200), 500); + this.FadeOut(500); Expire(); } } diff --git a/osu.Game/Overlays/MedalSplash/DrawableMedal.cs b/osu.Game/Overlays/MedalSplash/DrawableMedal.cs index 7d7ffbd12a..56b26e7176 100644 --- a/osu.Game/Overlays/MedalSplash/DrawableMedal.cs +++ b/osu.Game/Overlays/MedalSplash/DrawableMedal.cs @@ -147,23 +147,26 @@ namespace osu.Game.Overlays.MedalSplash medalContainer.ScaleTo(0); break; case DisplayState.Icon: - medalContainer.ScaleTo(1, duration, EasingTypes.OutElastic); - medalContainer.FadeIn(duration); + medalContainer + .FadeIn(duration) + .ScaleTo(1, duration, Easing.OutElastic); break; case DisplayState.MedalUnlocked: - medalContainer.ScaleTo(1); - medalContainer.Show(); + medalContainer + .FadeTo(1) + .ScaleTo(1); - ScaleTo(scale_when_unlocked, duration, EasingTypes.OutExpo); - MoveToY(MedalOverlay.DISC_SIZE / 2 - 30, duration, EasingTypes.OutExpo); + this.ScaleTo(scale_when_unlocked, duration, Easing.OutExpo); + this.MoveToY(MedalOverlay.DISC_SIZE / 2 - 30, duration, Easing.OutExpo); unlocked.FadeInFromZero(duration); break; case DisplayState.Full: - medalContainer.ScaleTo(1); - medalContainer.Show(); + medalContainer + .FadeTo(1) + .ScaleTo(1); - ScaleTo(scale_when_full, duration, EasingTypes.OutExpo); - MoveToY(MedalOverlay.DISC_SIZE / 2 - 60, duration, EasingTypes.OutExpo); + this.ScaleTo(scale_when_full, duration, Easing.OutExpo); + this.MoveToY(MedalOverlay.DISC_SIZE / 2 - 60, duration, Easing.OutExpo); name.FadeInFromZero(duration + 100); description.FadeInFromZero(duration * 2); break; diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs index aca73d2828..3ca4a204a5 100644 --- a/osu.Game/Overlays/Mods/ModButton.cs +++ b/osu.Game/Overlays/Mods/ModButton.cs @@ -35,7 +35,7 @@ namespace osu.Game.Overlays.Mods public string TooltipText => (SelectedMod?.Description ?? Mods.FirstOrDefault()?.Description) ?? string.Empty; - private const EasingTypes mod_switch_easing = EasingTypes.InOutSine; + private const Easing mod_switch_easing = Easing.InOutSine; private const double mod_switch_duration = 120; // A selected index of -1 means not selected. @@ -67,8 +67,8 @@ namespace osu.Game.Overlays.Mods if (beforeSelected != Selected) { - iconsContainer.RotateTo(Selected ? 5f : 0f, 300, EasingTypes.OutElastic); - iconsContainer.ScaleTo(Selected ? 1.1f : 1f, 300, EasingTypes.OutElastic); + iconsContainer.RotateTo(Selected ? 5f : 0f, 300, Easing.OutElastic); + iconsContainer.ScaleTo(Selected ? 1.1f : 1f, 300, Easing.OutElastic); } if (modBefore != modAfter) @@ -81,11 +81,13 @@ namespace osu.Game.Overlays.Mods backgroundIcon.Icon = modAfter.Icon; using (BeginDelayedSequence(mod_switch_duration, true)) { - foregroundIcon.RotateTo(-rotate_angle * direction); - foregroundIcon.RotateTo(0f, mod_switch_duration, mod_switch_easing); + foregroundIcon + .RotateTo(-rotate_angle * direction) + .RotateTo(0f, mod_switch_duration, mod_switch_easing); - backgroundIcon.RotateTo(rotate_angle * direction); - backgroundIcon.RotateTo(0f, mod_switch_duration, mod_switch_easing); + backgroundIcon + .RotateTo(rotate_angle * direction) + .RotateTo(0f, mod_switch_duration, mod_switch_easing); Schedule(() => displayMod(modAfter)); } diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs index ca74189c86..703deea382 100644 --- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs +++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs @@ -66,14 +66,14 @@ namespace osu.Game.Overlays.Mods { base.PopOut(); - rankedMultiplerContainer.MoveToX(rankedMultiplerContainer.DrawSize.X, APPEAR_DURATION, EasingTypes.InSine); - rankedMultiplerContainer.FadeOut(APPEAR_DURATION, EasingTypes.InSine); + rankedMultiplerContainer.MoveToX(rankedMultiplerContainer.DrawSize.X, APPEAR_DURATION, Easing.InSine); + rankedMultiplerContainer.FadeOut(APPEAR_DURATION, Easing.InSine); foreach (ModSection section in modSectionsContainer.Children) { - section.ButtonsContainer.TransformSpacingTo(new Vector2(100f, 0f), APPEAR_DURATION, EasingTypes.InSine); - section.ButtonsContainer.MoveToX(100f, APPEAR_DURATION, EasingTypes.InSine); - section.ButtonsContainer.FadeOut(APPEAR_DURATION, EasingTypes.InSine); + section.ButtonsContainer.TransformSpacingTo(new Vector2(100f, 0f), APPEAR_DURATION, Easing.InSine); + section.ButtonsContainer.MoveToX(100f, APPEAR_DURATION, Easing.InSine); + section.ButtonsContainer.FadeOut(APPEAR_DURATION, Easing.InSine); } } @@ -81,14 +81,14 @@ namespace osu.Game.Overlays.Mods { base.PopIn(); - rankedMultiplerContainer.MoveToX(0, ranked_multiplier_duration, EasingTypes.OutQuint); - rankedMultiplerContainer.FadeIn(ranked_multiplier_duration, EasingTypes.OutQuint); + rankedMultiplerContainer.MoveToX(0, ranked_multiplier_duration, Easing.OutQuint); + rankedMultiplerContainer.FadeIn(ranked_multiplier_duration, Easing.OutQuint); foreach (ModSection section in modSectionsContainer.Children) { - section.ButtonsContainer.TransformSpacingTo(new Vector2(50f, 0f), button_duration, EasingTypes.OutQuint); - section.ButtonsContainer.MoveToX(0, button_duration, EasingTypes.OutQuint); - section.ButtonsContainer.FadeIn(button_duration, EasingTypes.OutQuint); + section.ButtonsContainer.TransformSpacingTo(new Vector2(50f, 0f), button_duration, Easing.OutQuint); + section.ButtonsContainer.MoveToX(0, button_duration, Easing.OutQuint); + section.ButtonsContainer.FadeIn(button_duration, Easing.OutQuint); } } diff --git a/osu.Game/Overlays/Music/PlaylistItem.cs b/osu.Game/Overlays/Music/PlaylistItem.cs index 0a095327b0..128dddbce5 100644 --- a/osu.Game/Overlays/Music/PlaylistItem.cs +++ b/osu.Game/Overlays/Music/PlaylistItem.cs @@ -41,7 +41,7 @@ namespace osu.Game.Overlays.Music if (value == selected) return; selected = value; - Flush(true); + FinishTransforms(true); foreach (SpriteText s in titleSprites) s.FadeColour(Selected ? hoverColour : Color4.White, fade_duration); } @@ -145,7 +145,7 @@ namespace osu.Game.Overlays.Music matching = value; - FadeTo(matching ? 1 : 0, 200); + this.FadeTo(matching ? 1 : 0, 200); } } } diff --git a/osu.Game/Overlays/Music/PlaylistList.cs b/osu.Game/Overlays/Music/PlaylistList.cs index ca46bdea95..cd28737adb 100644 --- a/osu.Game/Overlays/Music/PlaylistList.cs +++ b/osu.Game/Overlays/Music/PlaylistList.cs @@ -73,6 +73,17 @@ namespace osu.Game.Overlays.Music }; } + public void AddBeatmapSet(BeatmapSetInfo beatmapSet) + { + items.Add(new PlaylistItem(beatmapSet) { OnSelect = itemSelected }); + } + + public void RemoveBeatmapSet(BeatmapSetInfo beatmapSet) + { + PlaylistItem itemToRemove = items.Children.FirstOrDefault(item => item.BeatmapSetInfo == beatmapSet); + if (itemToRemove != null) items.Remove(itemToRemove); + } + private class ItemSearchContainer : FillFlowContainer, IHasFilterableChildren { public string[] FilterTerms => new string[] { }; @@ -90,7 +101,7 @@ namespace osu.Game.Overlays.Music public ItemSearchContainer() { LayoutDuration = 200; - LayoutEasing = EasingTypes.OutQuint; + LayoutEasing = Easing.OutQuint; } } } diff --git a/osu.Game/Overlays/Music/PlaylistOverlay.cs b/osu.Game/Overlays/Music/PlaylistOverlay.cs index 1e4c3c5ff6..bd822f8145 100644 --- a/osu.Game/Overlays/Music/PlaylistOverlay.cs +++ b/osu.Game/Overlays/Music/PlaylistOverlay.cs @@ -80,6 +80,9 @@ namespace osu.Game.Overlays.Music list.BeatmapSets = BeatmapSets = beatmaps.GetAllWithChildren(b => !b.DeletePending).ToList(); + beatmaps.BeatmapSetAdded += s => list.AddBeatmapSet(s); + beatmaps.BeatmapSetRemoved += s => list.RemoveBeatmapSet(s); + beatmapBacking.BindTo(game.Beatmap); filter.Search.OnCommit = (sender, newText) => @@ -101,16 +104,16 @@ namespace osu.Game.Overlays.Music filter.Search.HoldFocus = true; Schedule(() => inputManager.ChangeFocus(filter.Search)); - ResizeTo(new Vector2(1, playlist_height), transition_duration, EasingTypes.OutQuint); - FadeIn(transition_duration, EasingTypes.OutQuint); + this.ResizeTo(new Vector2(1, playlist_height), transition_duration, Easing.OutQuint); + this.FadeIn(transition_duration, Easing.OutQuint); } protected override void PopOut() { filter.Search.HoldFocus = false; - ResizeTo(new Vector2(1, 0), transition_duration, EasingTypes.OutQuint); - FadeOut(transition_duration); + this.ResizeTo(new Vector2(1, 0), transition_duration, Easing.OutQuint); + this.FadeOut(transition_duration); } private void itemSelected(BeatmapSetInfo set) diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 0da425652a..b435c505c9 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -82,7 +82,7 @@ namespace osu.Game.Overlays protected override bool OnDragEnd(InputState state) { - dragContainer.MoveTo(Vector2.Zero, 800, EasingTypes.OutElastic); + dragContainer.MoveTo(Vector2.Zero, 800, Easing.OutElastic); return base.OnDragEnd(state); } @@ -204,7 +204,7 @@ namespace osu.Game.Overlays beatmapBacking.BindTo(game.Beatmap); - playlist.StateChanged += (c, s) => playlistButton.FadeColour(s == Visibility.Visible ? colours.Yellow : Color4.White, 200, EasingTypes.OutQuint); + playlist.StateChanged += (c, s) => playlistButton.FadeColour(s == Visibility.Visible ? colours.Yellow : Color4.White, 200, Easing.OutQuint); } protected override void LoadComplete() @@ -345,13 +345,13 @@ namespace osu.Game.Overlays { case TransformDirection.Next: d.Position = new Vector2(400, 0); - d.MoveToX(0, 500, EasingTypes.OutCubic); - currentBackground.MoveToX(-400, 500, EasingTypes.OutCubic); + d.MoveToX(0, 500, Easing.OutCubic); + currentBackground.MoveToX(-400, 500, Easing.OutCubic); break; case TransformDirection.Prev: d.Position = new Vector2(-400, 0); - d.MoveToX(0, 500, EasingTypes.OutCubic); - currentBackground.MoveToX(400, 500, EasingTypes.OutCubic); + d.MoveToX(0, 500, Easing.OutCubic); + currentBackground.MoveToX(400, 500, Easing.OutCubic); break; } currentBackground.Expire(); @@ -368,16 +368,16 @@ namespace osu.Game.Overlays { base.PopIn(); - FadeIn(transition_length, EasingTypes.OutQuint); - dragContainer.ScaleTo(1, transition_length, EasingTypes.OutElastic); + this.FadeIn(transition_length, Easing.OutQuint); + dragContainer.ScaleTo(1, transition_length, Easing.OutElastic); } protected override void PopOut() { base.PopOut(); - FadeOut(transition_length, EasingTypes.OutQuint); - dragContainer.ScaleTo(0.9f, transition_length, EasingTypes.OutQuint); + this.FadeOut(transition_length, Easing.OutQuint); + dragContainer.ScaleTo(0.9f, transition_length, Easing.OutQuint); } private enum TransformDirection diff --git a/osu.Game/Overlays/NotificationManager.cs b/osu.Game/Overlays/NotificationManager.cs index 18cb49f335..ad0236ae1f 100644 --- a/osu.Game/Overlays/NotificationManager.cs +++ b/osu.Game/Overlays/NotificationManager.cs @@ -89,9 +89,9 @@ namespace osu.Game.Overlays { base.PopIn(); - scrollContainer.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint); - MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint); - FadeTo(1, TRANSITION_LENGTH / 2); + scrollContainer.MoveToX(0, TRANSITION_LENGTH, Easing.OutQuint); + this.MoveToX(0, TRANSITION_LENGTH, Easing.OutQuint); + this.FadeTo(1, TRANSITION_LENGTH / 2); } private void markAllRead() @@ -105,8 +105,8 @@ namespace osu.Game.Overlays markAllRead(); - MoveToX(width, TRANSITION_LENGTH, EasingTypes.OutQuint); - FadeTo(0, TRANSITION_LENGTH / 2); + this.MoveToX(width, TRANSITION_LENGTH, Easing.OutQuint); + this.FadeTo(0, TRANSITION_LENGTH / 2); } } } \ No newline at end of file diff --git a/osu.Game/Overlays/Notifications/Notification.cs b/osu.Game/Overlays/Notifications/Notification.cs index f5613d6656..a590507f41 100644 --- a/osu.Game/Overlays/Notifications/Notification.cs +++ b/osu.Game/Overlays/Notifications/Notification.cs @@ -135,9 +135,9 @@ namespace osu.Game.Overlays.Notifications protected override void LoadComplete() { base.LoadComplete(); - FadeInFromZero(200); + this.FadeInFromZero(200); NotificationContent.MoveToX(DrawSize.X); - NotificationContent.MoveToX(0, 500, EasingTypes.OutQuint); + NotificationContent.MoveToX(0, 500, Easing.OutQuint); } private bool wasClosed; @@ -148,7 +148,7 @@ namespace osu.Game.Overlays.Notifications wasClosed = true; Closed?.Invoke(); - FadeOut(100); + this.FadeOut(100); Expire(); } @@ -181,13 +181,13 @@ namespace osu.Game.Overlays.Notifications protected override bool OnHover(InputState state) { - FadeColour(hoverColour, 200); + this.FadeColour(hoverColour, 200); return base.OnHover(state); } protected override void OnHoverLost(InputState state) { - FadeColour(OsuColour.Gray(0.2f), 200); + this.FadeColour(OsuColour.Gray(0.2f), 200); base.OnHoverLost(state); } } @@ -212,12 +212,9 @@ namespace osu.Game.Overlays.Notifications if (pulsate) { const float length = 1000; - using (pulsateLayer.BeginLoopedSequence(length / 2)) - { - pulsateLayer.FadeTo(0.4f, length, EasingTypes.In); - using (pulsateLayer.BeginDelayedSequence(length)) - pulsateLayer.FadeTo(1, length, EasingTypes.Out); - } + pulsateLayer.Loop(length / 2, + p => p.FadeTo(0.4f, length, Easing.In).Then().FadeTo(1, length, Easing.Out) + ); } } } diff --git a/osu.Game/Overlays/Notifications/NotificationSection.cs b/osu.Game/Overlays/Notifications/NotificationSection.cs index 831b09e7e9..efd3b39ee2 100644 --- a/osu.Game/Overlays/Notifications/NotificationSection.cs +++ b/osu.Game/Overlays/Notifications/NotificationSection.cs @@ -114,7 +114,7 @@ namespace osu.Game.Overlays.Notifications AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, LayoutDuration = 150, - LayoutEasing = EasingTypes.OutQuart, + LayoutEasing = Easing.OutQuart, Spacing = new Vector2(3), } }); diff --git a/osu.Game/Overlays/Notifications/ProgressNotification.cs b/osu.Game/Overlays/Notifications/ProgressNotification.cs index f0fa7e6da1..98aac3a02d 100644 --- a/osu.Game/Overlays/Notifications/ProgressNotification.cs +++ b/osu.Game/Overlays/Notifications/ProgressNotification.cs @@ -77,11 +77,8 @@ namespace osu.Game.Overlays.Notifications switch (state) { case ProgressNotificationState.Completed: - NotificationContent.MoveToY(-DrawSize.Y / 2, 200, EasingTypes.OutQuint); - FadeTo(0.01f, 200); //don't completely fade out or our scheduled task won't run. - - Delay(100); - Schedule(Completed); + NotificationContent.MoveToY(-DrawSize.Y / 2, 200, Easing.OutQuint); + this.FadeOut(200).Finally(d => Completed()); break; } } @@ -184,7 +181,7 @@ namespace osu.Game.Overlays.Notifications if (progress == value) return; progress = value; - box.ResizeTo(new Vector2(progress, 1), 100, EasingTypes.OutQuad); + box.ResizeTo(new Vector2(progress, 1), 100, Easing.OutQuad); } } @@ -196,7 +193,7 @@ namespace osu.Game.Overlays.Notifications set { active = value; - FadeColour(active ? colourActive : colourInactive, 100); + this.FadeColour(active ? colourActive : colourInactive, 100); } } diff --git a/osu.Game/Overlays/OnScreenDisplay.cs b/osu.Game/Overlays/OnScreenDisplay.cs index 464c9893d1..746b6dd50f 100644 --- a/osu.Game/Overlays/OnScreenDisplay.cs +++ b/osu.Game/Overlays/OnScreenDisplay.cs @@ -154,14 +154,13 @@ namespace osu.Game.Overlays textLine2.Text = settingValue; textLine3.Text = shortcut.ToUpper(); - box.FadeIn(500, EasingTypes.OutQuint); - box.ResizeHeightTo(height, 500, EasingTypes.OutQuint); - - using (box.BeginDelayedSequence(500)) - { - box.FadeOutFromOne(1500, EasingTypes.InQuint); - box.ResizeHeightTo(height_contracted, 1500, EasingTypes.InQuint); - } + box.Animate( + b => b.FadeIn(500, Easing.OutQuint), + b => b.ResizeHeightTo(height, 500, Easing.OutQuint) + ).Then( + b => b.FadeOutFromOne(1500, Easing.InQuint), + b => b.ResizeHeightTo(height_contracted, 1500, Easing.InQuint) + ); int optionCount = 0; int selectedOption = -1; @@ -232,13 +231,13 @@ namespace osu.Game.Overlays { if (glowing) { - fill.FadeColour(glowingColour, transition_speed, EasingTypes.OutQuint); - FadeEdgeEffectTo(glow_strength, transition_speed, EasingTypes.OutQuint); + fill.FadeColour(glowingColour, transition_speed, Easing.OutQuint); + FadeEdgeEffectTo(glow_strength, transition_speed, Easing.OutQuint); } else { - FadeEdgeEffectTo(0, transition_speed, EasingTypes.OutQuint); - fill.FadeColour(idleColour, transition_speed, EasingTypes.OutQuint); + FadeEdgeEffectTo(0, transition_speed, Easing.OutQuint); + fill.FadeColour(idleColour, transition_speed, Easing.OutQuint); } } @@ -261,7 +260,7 @@ namespace osu.Game.Overlays }; updateGlow(); - Flush(true); + FinishTransforms(true); } } } diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index 21bfd5afd6..d42ebc3384 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -517,13 +517,13 @@ namespace osu.Game.Overlays.Profile protected override bool OnHover(InputState state) { - FadeColour(hoverColour, 500, EasingTypes.OutQuint); + this.FadeColour(hoverColour, 500, Easing.OutQuint); return base.OnHover(state); } protected override void OnHoverLost(InputState state) { - FadeColour(Color4.White, 500, EasingTypes.OutQuint); + this.FadeColour(Color4.White, 500, Easing.OutQuint); base.OnHoverLost(state); } diff --git a/osu.Game/Overlays/Profile/RankChart.cs b/osu.Game/Overlays/Profile/RankChart.cs index dfd2219e1f..416bcedfea 100644 --- a/osu.Game/Overlays/Profile/RankChart.cs +++ b/osu.Game/Overlays/Profile/RankChart.cs @@ -138,7 +138,7 @@ namespace osu.Game.Overlays.Profile public void ResetBall() { - ball.MoveTo(new Vector2(1, GetYPosition(Values.Last())), ballShown ? transform_duration : 0, EasingTypes.OutQuint); + ball.MoveTo(new Vector2(1, GetYPosition(Values.Last())), ballShown ? transform_duration : 0, Easing.OutQuint); ball.Show(); BallRelease(); ballShown = true; @@ -158,7 +158,7 @@ namespace osu.Game.Overlays.Profile float y = GetYPosition(values[i]); if (Math.Abs(y * DrawHeight - position.Y) <= 8f) { - ball.MoveTo(new Vector2(index / (float)(count - 1), y), transform_duration, EasingTypes.OutQuint); + ball.MoveTo(new Vector2(index / (float)(count - 1), y), transform_duration, Easing.OutQuint); BallMove(i); } } diff --git a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs index bbecdff29a..6268a9753a 100644 --- a/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/General/LoginSettings.cs @@ -291,7 +291,7 @@ namespace osu.Game.Overlays.Settings.Sections.General { set { - statusIcon.FadeColour(value, 500, EasingTypes.OutQuint); + statusIcon.FadeColour(value, 500, Easing.OutQuint); } } diff --git a/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs b/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs index 5f8900449a..c4ce742153 100644 --- a/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs @@ -41,7 +41,7 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, AutoSizeDuration = transition_duration, - AutoSizeEasing = EasingTypes.OutQuint, + AutoSizeEasing = Easing.OutQuint, Masking = true, Children = new Drawable[] @@ -66,7 +66,7 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics letterboxSettings.AutoSizeAxes = isVisible ? Axes.Y : Axes.None; if (!isVisible) - letterboxSettings.ResizeHeightTo(0, transition_duration, EasingTypes.OutQuint); + letterboxSettings.ResizeHeightTo(0, transition_duration, Easing.OutQuint); }; letterboxing.TriggerChange(); } diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs index f80fef4a99..c74f4070e7 100644 --- a/osu.Game/Overlays/Settings/SettingsItem.cs +++ b/osu.Game/Overlays/Settings/SettingsItem.cs @@ -60,7 +60,7 @@ namespace osu.Game.Overlays.Settings set { // probably needs a better transition. - FadeTo(value ? 1 : 0); + this.FadeTo(value ? 1 : 0); } } diff --git a/osu.Game/Overlays/Settings/SettingsSection.cs b/osu.Game/Overlays/Settings/SettingsSection.cs index 77bf87f718..68ebde6b28 100644 --- a/osu.Game/Overlays/Settings/SettingsSection.cs +++ b/osu.Game/Overlays/Settings/SettingsSection.cs @@ -29,7 +29,7 @@ namespace osu.Game.Overlays.Settings { set { - FadeTo(value ? 1 : 0); + this.FadeTo(value ? 1 : 0); } } diff --git a/osu.Game/Overlays/Settings/SettingsSubsection.cs b/osu.Game/Overlays/Settings/SettingsSubsection.cs index 0a9f7ba5d0..ac6d2fa239 100644 --- a/osu.Game/Overlays/Settings/SettingsSubsection.cs +++ b/osu.Game/Overlays/Settings/SettingsSubsection.cs @@ -24,7 +24,7 @@ namespace osu.Game.Overlays.Settings { set { - FadeTo(value ? 1 : 0); + this.FadeTo(value ? 1 : 0); } } diff --git a/osu.Game/Overlays/Settings/Sidebar.cs b/osu.Game/Overlays/Settings/Sidebar.cs index 44d296a079..6eafc65d12 100644 --- a/osu.Game/Overlays/Settings/Sidebar.cs +++ b/osu.Game/Overlays/Settings/Sidebar.cs @@ -94,10 +94,10 @@ namespace osu.Game.Overlays.Settings switch (state) { default: - ResizeTo(new Vector2(DEFAULT_WIDTH, Height), 500, EasingTypes.OutQuint); + this.ResizeTo(new Vector2(DEFAULT_WIDTH, Height), 500, Easing.OutQuint); break; case ExpandedState.Expanded: - ResizeTo(new Vector2(EXPANDED_WIDTH, Height), 500, EasingTypes.OutQuint); + this.ResizeTo(new Vector2(EXPANDED_WIDTH, Height), 500, Easing.OutQuint); break; } } diff --git a/osu.Game/Overlays/SettingsOverlay.cs b/osu.Game/Overlays/SettingsOverlay.cs index 86e1c1069c..1dcabbfa15 100644 --- a/osu.Game/Overlays/SettingsOverlay.cs +++ b/osu.Game/Overlays/SettingsOverlay.cs @@ -125,9 +125,9 @@ namespace osu.Game.Overlays { base.PopIn(); - sectionsContainer.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint); - sidebar.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint); - FadeTo(1, TRANSITION_LENGTH / 2); + sectionsContainer.MoveToX(0, TRANSITION_LENGTH, Easing.OutQuint); + sidebar.MoveToX(0, TRANSITION_LENGTH, Easing.OutQuint); + this.FadeTo(1, TRANSITION_LENGTH / 2); searchTextBox.HoldFocus = true; } @@ -136,9 +136,9 @@ namespace osu.Game.Overlays { base.PopOut(); - sectionsContainer.MoveToX(-width, TRANSITION_LENGTH, EasingTypes.OutQuint); - sidebar.MoveToX(-SIDEBAR_WIDTH, TRANSITION_LENGTH, EasingTypes.OutQuint); - FadeTo(0, TRANSITION_LENGTH / 2); + sectionsContainer.MoveToX(-width, TRANSITION_LENGTH, Easing.OutQuint); + sidebar.MoveToX(-SIDEBAR_WIDTH, TRANSITION_LENGTH, Easing.OutQuint); + this.FadeTo(0, TRANSITION_LENGTH / 2); searchTextBox.HoldFocus = false; if (searchTextBox.HasFocus) diff --git a/osu.Game/Overlays/Toolbar/Toolbar.cs b/osu.Game/Overlays/Toolbar/Toolbar.cs index a7e5f8dcc4..bef9de6b6b 100644 --- a/osu.Game/Overlays/Toolbar/Toolbar.cs +++ b/osu.Game/Overlays/Toolbar/Toolbar.cs @@ -107,30 +107,30 @@ namespace osu.Game.Overlays.Toolbar protected override bool OnHover(InputState state) { - solidBackground.FadeTo(alpha_hovering, transition_time, EasingTypes.OutQuint); - gradientBackground.FadeIn(transition_time, EasingTypes.OutQuint); + solidBackground.FadeTo(alpha_hovering, transition_time, Easing.OutQuint); + gradientBackground.FadeIn(transition_time, Easing.OutQuint); return true; } protected override void OnHoverLost(InputState state) { - solidBackground.FadeTo(alpha_normal, transition_time, EasingTypes.OutQuint); - gradientBackground.FadeOut(transition_time, EasingTypes.OutQuint); + solidBackground.FadeTo(alpha_normal, transition_time, Easing.OutQuint); + gradientBackground.FadeOut(transition_time, Easing.OutQuint); } } protected override void PopIn() { - MoveToY(0, transition_time, EasingTypes.OutQuint); - FadeIn(transition_time / 2, EasingTypes.OutQuint); + this.MoveToY(0, transition_time, Easing.OutQuint); + this.FadeIn(transition_time / 2, Easing.OutQuint); } protected override void PopOut() { userArea?.LoginOverlay.Hide(); - MoveToY(-DrawSize.Y, transition_time, EasingTypes.OutQuint); - FadeOut(transition_time); + this.MoveToY(-DrawSize.Y, transition_time, Easing.OutQuint); + this.FadeOut(transition_time); } } } diff --git a/osu.Game/Overlays/Toolbar/ToolbarButton.cs b/osu.Game/Overlays/Toolbar/ToolbarButton.cs index 38fd954fe3..b5e832d381 100644 --- a/osu.Game/Overlays/Toolbar/ToolbarButton.cs +++ b/osu.Game/Overlays/Toolbar/ToolbarButton.cs @@ -135,7 +135,7 @@ namespace osu.Game.Overlays.Toolbar protected override bool OnClick(InputState state) { - HoverBackground.FlashColour(Color4.White.Opacity(100), 500, EasingTypes.OutQuint); + HoverBackground.FlashColour(Color4.White.Opacity(100), 500, Easing.OutQuint); return base.OnClick(state); } diff --git a/osu.Game/Overlays/Toolbar/ToolbarModeSelector.cs b/osu.Game/Overlays/Toolbar/ToolbarModeSelector.cs index 95906464ec..f48cb681a8 100644 --- a/osu.Game/Overlays/Toolbar/ToolbarModeSelector.cs +++ b/osu.Game/Overlays/Toolbar/ToolbarModeSelector.cs @@ -86,7 +86,7 @@ namespace osu.Game.Overlays.Toolbar public override bool HandleInput => !ruleset.Disabled; - private void disabledChanged(bool isDisabled) => FadeColour(isDisabled ? Color4.Gray : Color4.White, 300); + private void disabledChanged(bool isDisabled) => this.FadeColour(isDisabled ? Color4.Gray : Color4.White, 300); protected override void Update() { @@ -115,7 +115,7 @@ namespace osu.Game.Overlays.Toolbar if (!activeMode.IsValid) { - modeButtonLine.MoveToX(activeButton.DrawPosition.X, 200, EasingTypes.OutQuint); + modeButtonLine.MoveToX(activeButton.DrawPosition.X, 200, Easing.OutQuint); activeMode.Validate(); } } diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index f26b143088..f604eb5cd2 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.cs @@ -73,13 +73,13 @@ namespace osu.Game.Overlays protected override void PopIn() { base.PopIn(); - FadeEdgeEffectTo(0.5f, APPEAR_DURATION, EasingTypes.In); + FadeEdgeEffectTo(0.5f, APPEAR_DURATION, Easing.In); } protected override void PopOut() { base.PopOut(); - FadeEdgeEffectTo(0, DISAPPEAR_DURATION, EasingTypes.Out); + FadeEdgeEffectTo(0, DISAPPEAR_DURATION, Easing.Out); } public void ShowUser(User user, bool fetchOnline = true) diff --git a/osu.Game/Overlays/WaveOverlayContainer.cs b/osu.Game/Overlays/WaveOverlayContainer.cs index 1bb7813d90..fd89dcfbc4 100644 --- a/osu.Game/Overlays/WaveOverlayContainer.cs +++ b/osu.Game/Overlays/WaveOverlayContainer.cs @@ -17,8 +17,8 @@ namespace osu.Game.Overlays protected const float APPEAR_DURATION = 800; protected const float DISAPPEAR_DURATION = 500; - private const EasingTypes easing_show = EasingTypes.OutSine; - private const EasingTypes easing_hide = EasingTypes.InSine; + private const Easing easing_show = Easing.OutSine; + private const Easing easing_hide = Easing.InSine; private readonly Wave firstWave; private readonly Wave secondWave; @@ -137,23 +137,23 @@ namespace osu.Game.Overlays foreach (var w in wavesContainer.Children) w.State = Visibility.Visible; - FadeIn(100, EasingTypes.OutQuint); - contentContainer.MoveToY(0, APPEAR_DURATION, EasingTypes.OutQuint); + this.FadeIn(100, Easing.OutQuint); + contentContainer.MoveToY(0, APPEAR_DURATION, Easing.OutQuint); - FadeIn(100, EasingTypes.OutQuint); + this.FadeIn(100, Easing.OutQuint); } protected override void PopOut() { base.PopOut(); - FadeOut(DISAPPEAR_DURATION, EasingTypes.InQuint); - contentContainer.MoveToY(DrawHeight * 2f, DISAPPEAR_DURATION, EasingTypes.In); + this.FadeOut(DISAPPEAR_DURATION, Easing.InQuint); + contentContainer.MoveToY(DrawHeight * 2f, DISAPPEAR_DURATION, Easing.In); foreach (var w in wavesContainer.Children) w.State = Visibility.Hidden; - FadeOut(DISAPPEAR_DURATION, EasingTypes.InQuint); + this.FadeOut(DISAPPEAR_DURATION, Easing.InQuint); } protected override void UpdateAfterChildren() @@ -210,10 +210,10 @@ namespace osu.Game.Overlays switch (value) { case Visibility.Hidden: - MoveToY(Parent.Parent.DrawSize.Y, DISAPPEAR_DURATION, easing_hide); + this.MoveToY(Parent.Parent.DrawSize.Y, DISAPPEAR_DURATION, easing_hide); break; case Visibility.Visible: - MoveToY(FinalPosition, APPEAR_DURATION, easing_show); + this.MoveToY(FinalPosition, APPEAR_DURATION, easing_show); break; } } diff --git a/osu.Game/Rulesets/Judgements/DrawableJudgement.cs b/osu.Game/Rulesets/Judgements/DrawableJudgement.cs index 3a82827497..f0a53d677b 100644 --- a/osu.Game/Rulesets/Judgements/DrawableJudgement.cs +++ b/osu.Game/Rulesets/Judgements/DrawableJudgement.cs @@ -64,26 +64,24 @@ namespace osu.Game.Rulesets.Judgements { base.LoadComplete(); - FadeInFromZero(100, EasingTypes.OutQuint); + this.FadeInFromZero(100, Easing.OutQuint); switch (Judgement.Result) { case HitResult.Miss: - ScaleTo(1.6f); - ScaleTo(1, 100, EasingTypes.In); + this.ScaleTo(1.6f); + this.ScaleTo(1, 100, Easing.In); - MoveToOffset(new Vector2(0, 100), 800, EasingTypes.InQuint); - RotateTo(40, 800, EasingTypes.InQuint); + this.MoveToOffset(new Vector2(0, 100), 800, Easing.InQuint); + this.RotateTo(40, 800, Easing.InQuint); - Delay(600); - FadeOut(200); + this.Delay(600).FadeOut(200); break; case HitResult.Hit: - ScaleTo(0.9f); - ScaleTo(1, 500, EasingTypes.OutElastic); + this.ScaleTo(0.9f); + this.ScaleTo(1, 500, Easing.OutElastic); - Delay(100); - FadeOut(400); + this.Delay(100).FadeOut(400); break; } diff --git a/osu.Game/Screens/BackgroundScreen.cs b/osu.Game/Screens/BackgroundScreen.cs index a9cb93876c..c5bbf04075 100644 --- a/osu.Game/Screens/BackgroundScreen.cs +++ b/osu.Game/Screens/BackgroundScreen.cs @@ -56,29 +56,29 @@ namespace osu.Game.Screens Content.FadeOut(); Content.MoveToX(x_movement_amount); - Content.FadeIn(transition_length, EasingTypes.InOutQuart); - Content.MoveToX(0, transition_length, EasingTypes.InOutQuart); + Content.FadeIn(transition_length, Easing.InOutQuart); + Content.MoveToX(0, transition_length, Easing.InOutQuart); base.OnEntering(last); } protected override void OnSuspending(Screen next) { - Content.MoveToX(-x_movement_amount, transition_length, EasingTypes.InOutQuart); + Content.MoveToX(-x_movement_amount, transition_length, Easing.InOutQuart); base.OnSuspending(next); } protected override bool OnExiting(Screen next) { - Content.FadeOut(transition_length, EasingTypes.OutExpo); - Content.MoveToX(x_movement_amount, transition_length, EasingTypes.OutExpo); + Content.FadeOut(transition_length, Easing.OutExpo); + Content.MoveToX(x_movement_amount, transition_length, Easing.OutExpo); return base.OnExiting(next); } protected override void OnResuming(Screen last) { - Content.MoveToX(0, transition_length, EasingTypes.OutExpo); + Content.MoveToX(0, transition_length, Easing.OutExpo); base.OnResuming(last); } } diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs index 7e2c0305a9..29a422892f 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs @@ -40,7 +40,7 @@ namespace osu.Game.Screens.Backgrounds if (background != null) { newDepth = background.Depth + 1; - background.Flush(); + background.FinishTransforms(); background.FadeOut(250); background.Expire(); } @@ -58,7 +58,7 @@ namespace osu.Game.Screens.Backgrounds Beatmap = beatmap; } - public void BlurTo(Vector2 sigma, double duration, EasingTypes easing = EasingTypes.None) + public void BlurTo(Vector2 sigma, double duration, Easing easing = Easing.None) { background?.BlurTo(sigma, duration, easing); blurTarget = sigma; diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs index bab267a24a..de84e90baf 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs @@ -24,7 +24,7 @@ namespace osu.Game.Screens.Backgrounds private void display(Background newBackground) { - current?.FadeOut(800, EasingTypes.OutQuint); + current?.FadeOut(800, Easing.OutQuint); current?.Expire(); Add(current = newBackground); diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs index 7ec8347a8f..9f33d624e2 100644 --- a/osu.Game/Screens/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -7,6 +7,7 @@ using OpenTK.Graphics; using osu.Framework.Screens; using osu.Game.Screens.Backgrounds; using osu.Game.Screens.Select; +using osu.Framework.Graphics; namespace osu.Game.Screens.Edit { diff --git a/osu.Game/Screens/Menu/Button.cs b/osu.Game/Screens/Menu/Button.cs index 8dad83bd0e..e55c4ef4fe 100644 --- a/osu.Game/Screens/Menu/Button.cs +++ b/osu.Game/Screens/Menu/Button.cs @@ -128,16 +128,15 @@ namespace osu.Game.Screens.Menu bool rightward = beatIndex % 2 == 1; double duration = timingPoint.BeatLength / 2; - icon.RotateTo(rightward ? 10 : -10, duration * 2, EasingTypes.InOutSine); + icon.RotateTo(rightward ? 10 : -10, duration * 2, Easing.InOutSine); - icon.MoveToY(-10, duration, EasingTypes.Out); - icon.ScaleTo(Vector2.One, duration, EasingTypes.Out); - - using (icon.BeginDelayedSequence(duration)) - { - icon.MoveToY(0, duration, EasingTypes.In); - icon.ScaleTo(new Vector2(1, 0.9f), duration, EasingTypes.In); - } + icon.Animate( + i => i.MoveToY(-10, duration, Easing.Out), + i => i.ScaleTo(1, duration, Easing.Out) + ).Then( + i => i.MoveToY(0, duration, Easing.In), + i => i.ScaleTo(new Vector2(1, 0.9f), duration, Easing.In) + ); } protected override bool OnHover(InputState state) @@ -146,25 +145,25 @@ namespace osu.Game.Screens.Menu sampleHover?.Play(); - box.ScaleTo(new Vector2(1.5f, 1), 500, EasingTypes.OutElastic); + box.ScaleTo(new Vector2(1.5f, 1), 500, Easing.OutElastic); double duration = TimeUntilNextBeat; icon.ClearTransforms(); - icon.RotateTo(10, duration, EasingTypes.InOutSine); - icon.ScaleTo(new Vector2(1, 0.9f), duration, EasingTypes.Out); + icon.RotateTo(10, duration, Easing.InOutSine); + icon.ScaleTo(new Vector2(1, 0.9f), duration, Easing.Out); return true; } protected override void OnHoverLost(InputState state) { icon.ClearTransforms(); - icon.RotateTo(0, 500, EasingTypes.Out); - icon.MoveTo(Vector2.Zero, 500, EasingTypes.Out); - icon.ScaleTo(Vector2.One, 200, EasingTypes.Out); + icon.RotateTo(0, 500, Easing.Out); + icon.MoveTo(Vector2.Zero, 500, Easing.Out); + icon.ScaleTo(Vector2.One, 200, Easing.Out); if (State == ButtonState.Expanded) - box.ScaleTo(new Vector2(1, 1), 500, EasingTypes.OutElastic); + box.ScaleTo(new Vector2(1, 1), 500, Easing.OutElastic); } [BackgroundDependencyLoader] @@ -177,13 +176,13 @@ namespace osu.Game.Screens.Menu protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) { - boxHoverLayer.FadeTo(0.1f, 1000, EasingTypes.OutQuint); + boxHoverLayer.FadeTo(0.1f, 1000, Easing.OutQuint); return base.OnMouseDown(state, args); } protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) { - boxHoverLayer.FadeTo(0, 1000, EasingTypes.OutQuint); + boxHoverLayer.FadeTo(0, 1000, Easing.OutQuint); return base.OnMouseUp(state, args); } @@ -215,7 +214,7 @@ namespace osu.Game.Screens.Menu boxHoverLayer.ClearTransforms(); boxHoverLayer.Alpha = 0.9f; - boxHoverLayer.FadeOut(800, EasingTypes.OutExpo); + boxHoverLayer.FadeOut(800, Easing.OutExpo); } public override bool HandleInput => state != ButtonState.Exploded && box.Scale.X >= 0.8f; @@ -247,24 +246,24 @@ namespace osu.Game.Screens.Menu switch (ContractStyle) { default: - box.ScaleTo(new Vector2(0, 1), 500, EasingTypes.OutExpo); - FadeOut(500); + box.ScaleTo(new Vector2(0, 1), 500, Easing.OutExpo); + this.FadeOut(500); break; case 1: - box.ScaleTo(new Vector2(0, 1), 400, EasingTypes.InSine); - FadeOut(800); + box.ScaleTo(new Vector2(0, 1), 400, Easing.InSine); + this.FadeOut(800); break; } break; case ButtonState.Expanded: const int expand_duration = 500; - box.ScaleTo(new Vector2(1, 1), expand_duration, EasingTypes.OutExpo); - FadeIn(expand_duration / 6f); + box.ScaleTo(new Vector2(1, 1), expand_duration, Easing.OutExpo); + this.FadeIn(expand_duration / 6f); break; case ButtonState.Exploded: const int explode_duration = 200; - box.ScaleTo(new Vector2(2, 1), explode_duration, EasingTypes.OutExpo); - FadeOut(explode_duration / 4f * 3); + box.ScaleTo(new Vector2(2, 1), explode_duration, Easing.OutExpo); + this.FadeOut(explode_duration / 4f * 3); break; } } diff --git a/osu.Game/Screens/Menu/ButtonSystem.cs b/osu.Game/Screens/Menu/ButtonSystem.cs index 24fee10195..71f2a16c09 100644 --- a/osu.Game/Screens/Menu/ButtonSystem.cs +++ b/osu.Game/Screens/Menu/ButtonSystem.cs @@ -216,7 +216,7 @@ namespace osu.Game.Screens.Menu bool fromInitial = lastState == MenuState.Initial; if (state == MenuState.TopLevel) - buttonArea.Flush(true); + buttonArea.FinishTransforms(true); using (buttonArea.BeginDelayedSequence(fromInitial ? 150 : 0, true)) { @@ -224,16 +224,13 @@ namespace osu.Game.Screens.Menu { case MenuState.Exit: case MenuState.Initial: - toolbar?.Hide(); - - buttonAreaBackground.ScaleTo(Vector2.One, 500, EasingTypes.Out); + buttonAreaBackground.ScaleTo(Vector2.One, 500, Easing.Out); buttonArea.FadeOut(300); - using (osuLogo.BeginDelayedSequence(150)) - { - osuLogo.MoveTo(Vector2.Zero, 800, EasingTypes.OutExpo); - osuLogo.ScaleTo(1, 800, EasingTypes.OutExpo); - } + osuLogo.Delay(150) + .Schedule(() => toolbar?.Hide()) + .ScaleTo(1, 800, Easing.OutExpo) + .MoveTo(Vector2.Zero, 800, Easing.OutExpo); foreach (Button b in buttonsTopLevel) b.State = ButtonState.Contracted; @@ -250,19 +247,20 @@ namespace osu.Game.Screens.Menu sampleBack?.Play(); break; case MenuState.TopLevel: - buttonAreaBackground.ScaleTo(Vector2.One, 200, EasingTypes.Out); + buttonAreaBackground.ScaleTo(Vector2.One, 200, Easing.Out); - osuLogo.ClearTransforms(); - osuLogo.MoveTo(buttonFlow.DrawPosition, 200, EasingTypes.In); - osuLogo.ScaleTo(0.5f, 200, EasingTypes.In); - - buttonArea.FadeIn(300); + var sequence = osuLogo + .ScaleTo(0.5f, 200, Easing.In) + .MoveTo(buttonFlow.DrawPosition, 200, Easing.In); if (fromInitial && osuLogo.Scale.X > 0.5f) - using (osuLogo.BeginDelayedSequence(200, true)) - osuLogo.Impact(); + sequence.OnComplete(o => + { + o.Impact(); + toolbar?.Show(); + }); - Scheduler.AddDelayed(() => toolbar?.Show(), 150); + buttonArea.FadeIn(300); foreach (Button b in buttonsTopLevel) b.State = ButtonState.Expanded; @@ -278,7 +276,7 @@ namespace osu.Game.Screens.Menu b.State = ButtonState.Expanded; break; case MenuState.EnteringMode: - buttonAreaBackground.ScaleTo(new Vector2(2, 0), 300, EasingTypes.InSine); + buttonAreaBackground.ScaleTo(new Vector2(2, 0), 300, Easing.InSine); buttonsTopLevel.ForEach(b => b.ContractStyle = 1); buttonsPlay.ForEach(b => b.ContractStyle = 1); diff --git a/osu.Game/Screens/Menu/Disclaimer.cs b/osu.Game/Screens/Menu/Disclaimer.cs index beaaa373b6..6a176898a2 100644 --- a/osu.Game/Screens/Menu/Disclaimer.cs +++ b/osu.Game/Screens/Menu/Disclaimer.cs @@ -98,18 +98,13 @@ namespace osu.Game.Screens.Menu { base.OnEntering(last); - Content.FadeInFromZero(500); + icon.Delay(1500).FadeColour(iconColour, 200); - icon.Delay(1500); - icon.FadeColour(iconColour, 200); - - Delay(6000, true); - - Content.FadeOut(250); - - Delay(250); - - Schedule(() => Push(intro)); + Content + .FadeInFromZero(500) + .Then(5500) + .FadeOut(250) + .Finally(d => Push(intro)); } } } diff --git a/osu.Game/Screens/Menu/Intro.cs b/osu.Game/Screens/Menu/Intro.cs index 6e42a1bae9..7b16e7e7ad 100644 --- a/osu.Game/Screens/Menu/Intro.cs +++ b/osu.Game/Screens/Menu/Intro.cs @@ -134,8 +134,8 @@ namespace osu.Game.Screens.Menu logo.ScaleTo(0.4f); logo.FadeOut(); - logo.ScaleTo(1, 4400, EasingTypes.OutQuint); - logo.FadeIn(20000, EasingTypes.OutQuint); + logo.ScaleTo(1, 4400, Easing.OutQuint); + logo.FadeIn(20000, Easing.OutQuint); } protected override void OnSuspending(Screen next) diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index df9b304a47..2544cc2837 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -94,9 +94,7 @@ namespace osu.Game.Screens.Menu { if (!track.IsRunning) { - track.Seek(metadata.PreviewTime); - if (metadata.PreviewTime == -1) - track.Seek(track.Length * 0.4f); + track.Seek(metadata.PreviewTime != -1 ? metadata.PreviewTime : 0.4f * track.Length); track.Start(); } } @@ -120,10 +118,10 @@ namespace osu.Game.Screens.Menu buttons.State = MenuState.EnteringMode; - Content.FadeOut(length, EasingTypes.InSine); - Content.MoveTo(new Vector2(-800, 0), length, EasingTypes.InSine); + Content.FadeOut(length, Easing.InSine); + Content.MoveTo(new Vector2(-800, 0), length, Easing.InSine); - sideFlashes.FadeOut(length / 4, EasingTypes.OutQuint); + sideFlashes.FadeOut(length / 4, Easing.OutQuint); } protected override void OnResuming(Screen last) @@ -139,10 +137,10 @@ namespace osu.Game.Screens.Menu buttons.State = MenuState.TopLevel; - Content.FadeIn(length, EasingTypes.OutQuint); - Content.MoveTo(new Vector2(0, 0), length, EasingTypes.OutQuint); + Content.FadeIn(length, Easing.OutQuint); + Content.MoveTo(new Vector2(0, 0), length, Easing.OutQuint); - sideFlashes.FadeIn(length / 4, EasingTypes.InQuint); + sideFlashes.FadeIn(length / 4, Easing.InQuint); } protected override bool OnExiting(Screen next) diff --git a/osu.Game/Screens/Menu/MenuSideFlashes.cs b/osu.Game/Screens/Menu/MenuSideFlashes.cs index 065c7c5be0..4ecf78e764 100644 --- a/osu.Game/Screens/Menu/MenuSideFlashes.cs +++ b/osu.Game/Screens/Menu/MenuSideFlashes.cs @@ -90,9 +90,9 @@ namespace osu.Game.Screens.Menu private void flash(Drawable d, double beatLength, bool kiai, TrackAmplitudes amplitudes) { - d.FadeTo(Math.Max(0, ((d.Equals(leftBox) ? amplitudes.LeftChannel : amplitudes.RightChannel) - amplitude_dead_zone) / (kiai ? kiai_multiplier : alpha_multiplier)), box_fade_in_time); - using (d.BeginDelayedSequence(box_fade_in_time)) - d.FadeOut(beatLength, EasingTypes.In); + d.FadeTo(Math.Max(0, ((d.Equals(leftBox) ? amplitudes.LeftChannel : amplitudes.RightChannel) - amplitude_dead_zone) / (kiai ? kiai_multiplier : alpha_multiplier)), box_fade_in_time) + .Then() + .FadeOut(beatLength, Easing.In); } } } diff --git a/osu.Game/Screens/Menu/OsuLogo.cs b/osu.Game/Screens/Menu/OsuLogo.cs index ecfd98688e..64c28816d8 100644 --- a/osu.Game/Screens/Menu/OsuLogo.cs +++ b/osu.Game/Screens/Menu/OsuLogo.cs @@ -237,34 +237,32 @@ namespace osu.Game.Screens.Menu if (beatIndex < 0) return; if (IsHovered) - { - using (BeginDelayedSequence(early_activation)) - Schedule(() => sampleBeat.Play()); - } + this.Delay(early_activation).Schedule(() => sampleBeat.Play()); - logoBeatContainer.ScaleTo(1 - 0.02f * amplitudeAdjust, early_activation, EasingTypes.Out); - using (logoBeatContainer.BeginDelayedSequence(early_activation)) - logoBeatContainer.ScaleTo(1, beatLength * 2, EasingTypes.OutQuint); + logoBeatContainer + .ScaleTo(1 - 0.02f * amplitudeAdjust, early_activation, Easing.Out) + .Then() + .ScaleTo(1, beatLength * 2, Easing.OutQuint); ripple.ClearTransforms(); - - ripple.ScaleTo(logoAmplitudeContainer.Scale); - ripple.Alpha = 0.15f * amplitudeAdjust; - - ripple.ScaleTo(logoAmplitudeContainer.Scale * (1 + 0.04f * amplitudeAdjust), beatLength, EasingTypes.OutQuint); - ripple.FadeOut(beatLength, EasingTypes.OutQuint); + ripple + .ScaleTo(logoAmplitudeContainer.Scale) + .ScaleTo(logoAmplitudeContainer.Scale * (1 + 0.04f * amplitudeAdjust), beatLength, Easing.OutQuint) + .FadeTo(0.15f * amplitudeAdjust).FadeOut(beatLength, Easing.OutQuint); if (effectPoint.KiaiMode && flashLayer.Alpha < 0.4f) { flashLayer.ClearTransforms(); - visualizer.ClearTransforms(); + flashLayer + .FadeTo(0.2f * amplitudeAdjust, early_activation, Easing.Out) + .Then() + .FadeOut(beatLength); - flashLayer.FadeTo(0.2f * amplitudeAdjust, early_activation, EasingTypes.Out); - visualizer.FadeTo(0.9f * amplitudeAdjust, early_activation, EasingTypes.Out); - using (flashLayer.BeginDelayedSequence(early_activation)) - flashLayer.FadeOut(beatLength); - using (visualizer.BeginDelayedSequence(early_activation)) - visualizer.FadeTo(0.5f, beatLength); + visualizer.ClearTransforms(); + visualizer + .FadeTo(0.9f * amplitudeAdjust, early_activation, Easing.Out) + .Then() + .FadeTo(0.5f, beatLength); } } @@ -276,7 +274,7 @@ namespace osu.Game.Screens.Menu const float velocity_adjust_cutoff = 0.98f; var maxAmplitude = lastBeatIndex >= 0 ? Beatmap.Value.Track?.CurrentAmplitudes.Maximum ?? 0 : 0; - logoAmplitudeContainer.ScaleTo(1 - Math.Max(0, maxAmplitude - scale_adjust_cutoff) * 0.04f, 75, EasingTypes.OutQuint); + logoAmplitudeContainer.ScaleTo(1 - Math.Max(0, maxAmplitude - scale_adjust_cutoff) * 0.04f, 75, Easing.OutQuint); if (maxAmplitude > velocity_adjust_cutoff) triangles.Velocity = 1 + Math.Max(0, maxAmplitude - velocity_adjust_cutoff) * 50; @@ -288,13 +286,13 @@ namespace osu.Game.Screens.Menu { if (!Interactive) return false; - logoBounceContainer.ScaleTo(0.9f, 1000, EasingTypes.Out); + logoBounceContainer.ScaleTo(0.9f, 1000, Easing.Out); return true; } protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) { - logoBounceContainer.ScaleTo(1f, 500, EasingTypes.OutElastic); + logoBounceContainer.ScaleTo(1f, 500, Easing.OutElastic); return true; } @@ -306,7 +304,7 @@ namespace osu.Game.Screens.Menu flashLayer.ClearTransforms(); flashLayer.Alpha = 0.4f; - flashLayer.FadeOut(1500, EasingTypes.OutExpo); + flashLayer.FadeOut(1500, Easing.OutExpo); Action?.Invoke(); return true; @@ -316,18 +314,18 @@ namespace osu.Game.Screens.Menu { if (!Interactive) return false; - logoHoverContainer.ScaleTo(1.1f, 500, EasingTypes.OutElastic); + logoHoverContainer.ScaleTo(1.1f, 500, Easing.OutElastic); return true; } protected override void OnHoverLost(InputState state) { - logoHoverContainer.ScaleTo(1, 500, EasingTypes.OutElastic); + logoHoverContainer.ScaleTo(1, 500, Easing.OutElastic); } public void Impact() { - impactContainer.FadeOutFromOne(250, EasingTypes.In); + impactContainer.FadeOutFromOne(250, Easing.In); impactContainer.ScaleTo(0.96f); impactContainer.ScaleTo(1.12f, 250); } diff --git a/osu.Game/Screens/Multiplayer/DrawableRoom.cs b/osu.Game/Screens/Multiplayer/DrawableRoom.cs index d8963be116..8e2d9e0200 100644 --- a/osu.Game/Screens/Multiplayer/DrawableRoom.cs +++ b/osu.Game/Screens/Multiplayer/DrawableRoom.cs @@ -235,7 +235,7 @@ namespace osu.Game.Screens.Multiplayer Anchor = Anchor.Centre, Origin = Anchor.Centre, FillMode = FillMode.Fill, - OnLoadComplete = d => d.FadeInFromZero(400, EasingTypes.Out), + OnLoadComplete = d => d.FadeInFromZero(400, Easing.Out), }) { RelativeSizeAxes = Axes.Both }, }; diff --git a/osu.Game/Screens/Multiplayer/Match.cs b/osu.Game/Screens/Multiplayer/Match.cs index ec6a66062d..a0843bfcae 100644 --- a/osu.Game/Screens/Multiplayer/Match.cs +++ b/osu.Game/Screens/Multiplayer/Match.cs @@ -8,6 +8,7 @@ using osu.Game.Screens.Backgrounds; using osu.Game.Screens.Play; using OpenTK.Graphics; using osu.Game.Screens.Select; +using osu.Framework.Graphics; namespace osu.Game.Screens.Multiplayer { diff --git a/osu.Game/Screens/Multiplayer/RoomInspector.cs b/osu.Game/Screens/Multiplayer/RoomInspector.cs index 83950b4387..5a9b3e4d11 100644 --- a/osu.Game/Screens/Multiplayer/RoomInspector.cs +++ b/osu.Game/Screens/Multiplayer/RoomInspector.cs @@ -337,7 +337,7 @@ namespace osu.Game.Screens.Multiplayer Anchor = Anchor.Centre, Origin = Anchor.Centre, FillMode = FillMode.Fill, - OnLoadComplete = d => d.FadeInFromZero(400, EasingTypes.Out), + OnLoadComplete = d => d.FadeInFromZero(400, Easing.Out), }) { RelativeSizeAxes = Axes.Both }, }; diff --git a/osu.Game/Screens/Play/HUD/ComboCounter.cs b/osu.Game/Screens/Play/HUD/ComboCounter.cs index f527eaacaf..47099f96e9 100644 --- a/osu.Game/Screens/Play/HUD/ComboCounter.cs +++ b/osu.Game/Screens/Play/HUD/ComboCounter.cs @@ -5,8 +5,6 @@ using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; -using osu.Framework.Graphics.Transforms; -using osu.Framework.MathUtils; using osu.Game.Graphics.Sprites; namespace osu.Game.Screens.Play.HUD @@ -24,7 +22,7 @@ namespace osu.Game.Screens.Play.HUD protected virtual double PopOutDuration => 150; protected virtual float PopOutScale => 2.0f; - protected virtual EasingTypes PopOutEasing => EasingTypes.None; + protected virtual Easing PopOutEasing => Easing.None; protected virtual float PopOutInitialAlpha => 0.75f; protected virtual double FadeOutDuration => 100; @@ -37,7 +35,7 @@ namespace osu.Game.Screens.Play.HUD /// /// Easing for the counter rollover animation. /// - protected EasingTypes RollingEasing => EasingTypes.None; + protected Easing RollingEasing => Easing.None; protected SpriteText DisplayedCountSpriteText; @@ -130,7 +128,7 @@ namespace osu.Game.Screens.Play.HUD protected virtual void OnCountRolling(int currentValue, int newValue) { - transformRoll(new TransformComboRoll(), currentValue, newValue); + transformRoll(currentValue, newValue); } protected virtual void OnCountIncrement(int currentValue, int newValue) @@ -170,7 +168,7 @@ namespace osu.Game.Screens.Play.HUD if (!rolling) { - Flush(false, typeof(TransformComboRoll)); + FinishTransforms(false, nameof(DisplayedCount)); IsRolling = false; DisplayedCount = prev; @@ -186,40 +184,9 @@ namespace osu.Game.Screens.Play.HUD } } - private void transformRoll(TransformComboRoll transform, int currentValue, int newValue) + private void transformRoll(int currentValue, int newValue) { - Flush(false, typeof(TransformComboRoll)); - - if (RollingDuration < 1) - { - DisplayedCount = Current; - return; - } - - transform.StartTime = Time.Current; - transform.EndTime = Time.Current + getProportionalDuration(currentValue, newValue); - transform.EndValue = newValue; - transform.Easing = RollingEasing; - - Transforms.Add(transform); - } - - protected class TransformComboRoll : Transform - { - public virtual int CurrentValue - { - get - { - double time = Time?.Current ?? 0; - if (time < StartTime) return StartValue; - if (time >= EndTime) return EndValue; - - return (int)Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing); - } - } - - public override void Apply(Drawable d) => ((ComboCounter)d).DisplayedCount = CurrentValue; - public override void ReadIntoStartValue(Drawable d) => StartValue = ((ComboCounter)d).DisplayedCount; + this.TransformTo(nameof(DisplayedCount), newValue, getProportionalDuration(currentValue, newValue), RollingEasing); } protected abstract void OnDisplayedCountRolling(int currentValue, int newValue); diff --git a/osu.Game/Screens/Play/HUD/ComboResultCounter.cs b/osu.Game/Screens/Play/HUD/ComboResultCounter.cs index c280702390..a4732f6796 100644 --- a/osu.Game/Screens/Play/HUD/ComboResultCounter.cs +++ b/osu.Game/Screens/Play/HUD/ComboResultCounter.cs @@ -1,10 +1,7 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System; using osu.Framework.Graphics; -using osu.Framework.Graphics.Transforms; -using osu.Framework.MathUtils; using osu.Game.Graphics.UserInterface; namespace osu.Game.Screens.Play.HUD @@ -12,44 +9,24 @@ namespace osu.Game.Screens.Play.HUD /// /// Used to display combo with a roll-up animation in results screen. /// - public class ComboResultCounter : RollingCounter + public class ComboResultCounter : RollingCounter { - protected override Type TransformType => typeof(TransformComboResult); - protected override double RollingDuration => 500; - protected override EasingTypes RollingEasing => EasingTypes.Out; + protected override Easing RollingEasing => Easing.Out; - protected override double GetProportionalDuration(ulong currentValue, ulong newValue) + protected override double GetProportionalDuration(long currentValue, long newValue) { return currentValue > newValue ? currentValue - newValue : newValue - currentValue; } - protected override string FormatCount(ulong count) + protected override string FormatCount(long count) { return $@"{count}x"; } - public override void Increment(ulong amount) + public override void Increment(long amount) { Current.Value = Current + amount; } - - protected class TransformComboResult : Transform - { - public virtual ulong CurrentValue - { - get - { - double time = Time?.Current ?? 0; - if (time < StartTime) return StartValue; - if (time >= EndTime) return EndValue; - - return (ulong)Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing); - } - } - - public override void Apply(Drawable d) => ((ComboResultCounter)d).DisplayedCount = CurrentValue; - public override void ReadIntoStartValue(Drawable d) => StartValue = ((ComboResultCounter)d).DisplayedCount; - } } } diff --git a/osu.Game/Screens/Play/HUD/ModDisplay.cs b/osu.Game/Screens/Play/HUD/ModDisplay.cs index f8235e5bcf..18a3096d7c 100644 --- a/osu.Game/Screens/Play/HUD/ModDisplay.cs +++ b/osu.Game/Screens/Play/HUD/ModDisplay.cs @@ -76,20 +76,20 @@ namespace osu.Game.Screens.Play.HUD private void appearTransform() { if (mods.Value.Any(m => !m.Ranked)) - unrankedText.FadeInFromZero(fade_duration, EasingTypes.OutQuint); + unrankedText.FadeInFromZero(fade_duration, Easing.OutQuint); else unrankedText.Hide(); - iconsContainer.Flush(); - iconsContainer.FadeInFromZero(fade_duration, EasingTypes.OutQuint); + iconsContainer.FinishTransforms(); + iconsContainer.FadeInFromZero(fade_duration, Easing.OutQuint); expand(); using (iconsContainer.BeginDelayedSequence(1200)) contract(); } - private void expand() => iconsContainer.TransformSpacingTo(new Vector2(5, 0), 500, EasingTypes.OutQuint); + private void expand() => iconsContainer.TransformSpacingTo(new Vector2(5, 0), 500, Easing.OutQuint); - private void contract() => iconsContainer.TransformSpacingTo(new Vector2(-25, 0), 500, EasingTypes.OutQuint); + private void contract() => iconsContainer.TransformSpacingTo(new Vector2(-25, 0), 500, Easing.OutQuint); protected override bool OnHover(InputState state) { diff --git a/osu.Game/Screens/Play/HUD/StandardComboCounter.cs b/osu.Game/Screens/Play/HUD/StandardComboCounter.cs index 525e52d207..04fe78116e 100644 --- a/osu.Game/Screens/Play/HUD/StandardComboCounter.cs +++ b/osu.Game/Screens/Play/HUD/StandardComboCounter.cs @@ -2,6 +2,7 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using OpenTK; +using osu.Framework.Graphics; namespace osu.Game.Screens.Play.HUD { diff --git a/osu.Game/Screens/Play/HUD/StandardHealthDisplay.cs b/osu.Game/Screens/Play/HUD/StandardHealthDisplay.cs index cac1f1a71b..06ef87276a 100644 --- a/osu.Game/Screens/Play/HUD/StandardHealthDisplay.cs +++ b/osu.Game/Screens/Play/HUD/StandardHealthDisplay.cs @@ -97,11 +97,11 @@ namespace osu.Game.Screens.Play.HUD if (judgement.Result == HitResult.Miss) return; - fill.FadeEdgeEffectTo(Math.Min(1, fill.EdgeEffect.Colour.Linear.A + (1f - base_glow_opacity) / glow_max_hits), 50, EasingTypes.OutQuint); - fill.Delay(glow_fade_delay); - fill.FadeEdgeEffectTo(base_glow_opacity, glow_fade_time, EasingTypes.OutQuint); + fill.FadeEdgeEffectTo(Math.Min(1, fill.EdgeEffect.Colour.Linear.A + (1f - base_glow_opacity) / glow_max_hits), 50, Easing.OutQuint) + .Delay(glow_fade_delay) + .FadeEdgeEffectTo(base_glow_opacity, glow_fade_time, Easing.OutQuint); } - protected override void SetHealth(float value) => fill.ResizeTo(new Vector2(value, 1), 200, EasingTypes.OutQuint); + protected override void SetHealth(float value) => fill.ResizeTo(new Vector2(value, 1), 200, Easing.OutQuint); } } diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index 3248495b61..70093a1407 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -98,10 +98,7 @@ namespace osu.Game.Screens.Play // in the case a replay isn't loaded, we want some elements to only appear briefly. if (!replayLoaded) - { - using (ModDisplay.BeginDelayedSequence(2000)) - ModDisplay.FadeOut(200); - } + ModDisplay.Delay(2000).FadeOut(200); } protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) diff --git a/osu.Game/Screens/Play/HotkeyRetryOverlay.cs b/osu.Game/Screens/Play/HotkeyRetryOverlay.cs index c4d956ebce..11f9a484dd 100644 --- a/osu.Game/Screens/Play/HotkeyRetryOverlay.cs +++ b/osu.Game/Screens/Play/HotkeyRetryOverlay.cs @@ -46,7 +46,7 @@ namespace osu.Game.Screens.Play if (args.Key == Key.Tilde) { - overlay.FadeIn(activate_delay, EasingTypes.Out); + overlay.FadeIn(activate_delay, Easing.Out); return true; } @@ -57,7 +57,7 @@ namespace osu.Game.Screens.Play { if (args.Key == Key.Tilde && !fired) { - overlay.FadeOut(fadeout_delay, EasingTypes.Out); + overlay.FadeOut(fadeout_delay, Easing.Out); return true; } diff --git a/osu.Game/Screens/Play/KeyCounterCollection.cs b/osu.Game/Screens/Play/KeyCounterCollection.cs index b4b2691390..01e20fdbd7 100644 --- a/osu.Game/Screens/Play/KeyCounterCollection.cs +++ b/osu.Game/Screens/Play/KeyCounterCollection.cs @@ -44,7 +44,7 @@ namespace osu.Game.Screens.Play private void load(OsuConfigManager config) { showKeyCounter = config.GetBindable(OsuSetting.KeyOverlay); - showKeyCounter.ValueChanged += keyCounterVisibility => FadeTo(keyCounterVisibility ? 1 : 0, duration); + showKeyCounter.ValueChanged += keyCounterVisibility => this.FadeTo(keyCounterVisibility ? 1 : 0, duration); showKeyCounter.TriggerChange(); } diff --git a/osu.Game/Screens/Play/MenuOverlay.cs b/osu.Game/Screens/Play/MenuOverlay.cs index aedbffbab9..a0f867d248 100644 --- a/osu.Game/Screens/Play/MenuOverlay.cs +++ b/osu.Game/Screens/Play/MenuOverlay.cs @@ -76,8 +76,8 @@ namespace osu.Game.Screens.Play public override bool HandleInput => State == Visibility.Visible; - protected override void PopIn() => FadeIn(transition_duration, EasingTypes.In); - protected override void PopOut() => FadeOut(transition_duration, EasingTypes.In); + protected override void PopIn() => this.FadeIn(transition_duration, Easing.In); + protected override void PopOut() => this.FadeOut(transition_duration, Easing.In); // Don't let mouse down events through the overlay or people can click circles while paused. protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) => true; diff --git a/osu.Game/Screens/Play/PauseContainer.cs b/osu.Game/Screens/Play/PauseContainer.cs index f052bafd63..eed5cd1c20 100644 --- a/osu.Game/Screens/Play/PauseContainer.cs +++ b/osu.Game/Screens/Play/PauseContainer.cs @@ -56,11 +56,7 @@ namespace osu.Game.Screens.Play AddInternal(pauseOverlay = new PauseOverlay { - OnResume = delegate - { - Delay(400); - Schedule(Resume); - }, + OnResume = () => this.Delay(400).Schedule(Resume), OnRetry = () => OnRetry(), OnQuit = () => OnQuit(), }); diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 1d6a1306be..9fc717f140 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -69,7 +69,7 @@ namespace osu.Game.Screens.Play private bool loadedSuccessfully => HitRenderer?.Objects.Any() == true; [BackgroundDependencyLoader(permitNulls: true)] - private void load(AudioManager audio, BeatmapDatabase beatmaps, OsuConfigManager config, OsuGame osu) + private void load(AudioManager audio, OsuConfigManager config, OsuGame osu) { dimLevel = config.GetBindable(OsuSetting.DimLevel); mouseWheelDisabled = config.GetBindable(OsuSetting.MouseDisableWheel); @@ -80,10 +80,6 @@ namespace osu.Game.Screens.Play try { - if (!Beatmap.Value.FullyLoaded) - // we need to ensure extras like storyboards are loaded. - Beatmap.Value = beatmaps.GetWorkingBeatmap(Beatmap.Value.BeatmapInfo, withStoryboard: true); - if (Beatmap.Value.Beatmap == null) throw new InvalidOperationException("Beatmap was not loaded"); @@ -259,29 +255,27 @@ namespace osu.Game.Screens.Play if (!loadedSuccessfully) return; - (Background as BackgroundScreenBeatmap)?.BlurTo(Vector2.Zero, 1500, EasingTypes.OutQuint); - Background?.FadeTo(1 - (float)dimLevel, 1500, EasingTypes.OutQuint); + (Background as BackgroundScreenBeatmap)?.BlurTo(Vector2.Zero, 1500, Easing.OutQuint); + Background?.FadeTo(1 - (float)dimLevel, 1500, Easing.OutQuint); Content.Alpha = 0; dimLevel.ValueChanged += newDim => Background?.FadeTo(1 - (float)newDim, 800); - Content.ScaleTo(0.7f); + Content + .ScaleTo(0.7f) + .ScaleTo(1, 750, Easing.OutQuint) + .Delay(250) + .FadeIn(250); - using (Content.BeginDelayedSequence(250)) - Content.FadeIn(250); - - Content.ScaleTo(1, 750, EasingTypes.OutQuint); - - using (BeginDelayedSequence(750)) - Schedule(() => - { - if (!pauseContainer.IsPaused) - decoupledClock.Start(); - }); + this.Delay(750).Schedule(() => + { + if (!pauseContainer.IsPaused) + decoupledClock.Start(); + }); pauseContainer.Alpha = 0; - pauseContainer.FadeIn(750, EasingTypes.OutQuint); + pauseContainer.FadeIn(750, Easing.OutQuint); } protected override void OnSuspending(Screen next) @@ -313,7 +307,7 @@ namespace osu.Game.Screens.Play HitRenderer?.FadeOut(fade_out_duration); Content.FadeOut(fade_out_duration); - hudOverlay?.ScaleTo(0.7f, fade_out_duration * 3, EasingTypes.In); + hudOverlay?.ScaleTo(0.7f, fade_out_duration * 3, Easing.In); Background?.FadeTo(1f, fade_out_duration); } diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index cdb608e74d..d9bdb50ef0 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -77,20 +77,18 @@ namespace osu.Game.Screens.Play RestartRequested = player.RestartRequested, }); - Delay(400); - - Schedule(pushWhenLoaded); + this.Delay(400).Schedule(pushWhenLoaded); } private void contentIn() { - Content.ScaleTo(1, 650, EasingTypes.OutQuint); + Content.ScaleTo(1, 650, Easing.OutQuint); Content.FadeInFromZero(400); } private void contentOut() { - Content.ScaleTo(0.7f, 300, EasingTypes.InQuint); + Content.ScaleTo(0.7f, 300, Easing.InQuint); Content.FadeOut(250); } @@ -104,16 +102,9 @@ namespace osu.Game.Screens.Play contentIn(); - Delay(500, true); - - logo.MoveToOffset(new Vector2(0, -180), 500, EasingTypes.InOutExpo); - Delay(250, true); - - info.FadeIn(500); - - Delay(1400, true); - - Schedule(pushWhenLoaded); + logo.Delay(500).MoveToOffset(new Vector2(0, -180), 500, Easing.InOutExpo); + info.Delay(750).FadeIn(500); + this.Delay(2150).Schedule(pushWhenLoaded); } private void pushWhenLoaded() @@ -123,9 +114,7 @@ namespace osu.Game.Screens.Play contentOut(); - Delay(250); - - Schedule(() => + this.Delay(250).Schedule(() => { if (!IsCurrentScreen) return; @@ -142,8 +131,8 @@ namespace osu.Game.Screens.Play protected override bool OnExiting(Screen next) { - Content.ScaleTo(0.7f, 150, EasingTypes.InQuint); - FadeOut(150); + Content.ScaleTo(0.7f, 150, Easing.InQuint); + this.FadeOut(150); return base.OnExiting(next); } diff --git a/osu.Game/Screens/Play/ReplaySettings/ReplayGroup.cs b/osu.Game/Screens/Play/ReplaySettings/ReplayGroup.cs index a2494d3a69..06cd783cae 100644 --- a/osu.Game/Screens/Play/ReplaySettings/ReplayGroup.cs +++ b/osu.Game/Screens/Play/ReplaySettings/ReplayGroup.cs @@ -94,7 +94,7 @@ namespace osu.Game.Screens.Play.ReplaySettings Direction = FillDirection.Vertical, RelativeSizeAxes = Axes.X, AutoSizeDuration = transition_duration, - AutoSizeEasing = EasingTypes.OutQuint, + AutoSizeEasing = Easing.OutQuint, AutoSizeAxes = Axes.Y, Padding = new MarginPadding(15), Spacing = new Vector2(0, 15), @@ -123,10 +123,10 @@ namespace osu.Game.Screens.Play.ReplaySettings else { content.AutoSizeAxes = Axes.None; - content.ResizeHeightTo(0, transition_duration, EasingTypes.OutQuint); + content.ResizeHeightTo(0, transition_duration, Easing.OutQuint); } - button.FadeColour(expanded ? buttonActiveColour : Color4.White, 200, EasingTypes.OutQuint); + button.FadeColour(expanded ? buttonActiveColour : Color4.White, 200, Easing.OutQuint); } } } diff --git a/osu.Game/Screens/Play/SkipButton.cs b/osu.Game/Screens/Play/SkipButton.cs index b0e3de0ea4..b2d5abe71a 100644 --- a/osu.Game/Screens/Play/SkipButton.cs +++ b/osu.Game/Screens/Play/SkipButton.cs @@ -100,9 +100,9 @@ namespace osu.Game.Screens.Play return; } - FadeInFromZero(fade_time); + this.FadeInFromZero(fade_time); using (BeginAbsoluteSequence(beginFadeTime)) - FadeOut(fade_time); + this.FadeOut(fade_time); button.Action = () => AudioClock?.Seek(startTime - skip_required_cutoff - fade_time); @@ -114,7 +114,7 @@ namespace osu.Game.Screens.Play protected override void Update() { base.Update(); - remainingTimeBox.ResizeWidthTo((float)Math.Max(0, 1 - (Time.Current - displayTime) / (beginFadeTime - displayTime)), 120, EasingTypes.OutQuint); + remainingTimeBox.ResizeWidthTo((float)Math.Max(0, 1 - (Time.Current - displayTime) / (beginFadeTime - displayTime)), 120, Easing.OutQuint); } protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) @@ -154,14 +154,14 @@ namespace osu.Game.Screens.Play { case Visibility.Visible: if (lastState == Visibility.Hidden) - FadeIn(500, EasingTypes.OutExpo); + this.FadeIn(500, Easing.OutExpo); if (!IsHovered) using (BeginDelayedSequence(1000)) scheduledHide = Schedule(() => State = Visibility.Hidden); break; case Visibility.Hidden: - FadeOut(1000, EasingTypes.OutExpo); + this.FadeOut(1000, Easing.OutExpo); break; } } @@ -249,29 +249,29 @@ namespace osu.Game.Screens.Play protected override bool OnHover(InputState state) { - flow.TransformSpacingTo(new Vector2(5), 500, EasingTypes.OutQuint); - box.FadeColour(colourHover, 500, EasingTypes.OutQuint); - background.FadeTo(0.4f, 500, EasingTypes.OutQuint); + flow.TransformSpacingTo(new Vector2(5), 500, Easing.OutQuint); + box.FadeColour(colourHover, 500, Easing.OutQuint); + background.FadeTo(0.4f, 500, Easing.OutQuint); return base.OnHover(state); } protected override void OnHoverLost(InputState state) { - flow.TransformSpacingTo(new Vector2(0), 500, EasingTypes.OutQuint); - box.FadeColour(colourNormal, 500, EasingTypes.OutQuint); - background.FadeTo(0.2f, 500, EasingTypes.OutQuint); + flow.TransformSpacingTo(new Vector2(0), 500, Easing.OutQuint); + box.FadeColour(colourNormal, 500, Easing.OutQuint); + background.FadeTo(0.2f, 500, Easing.OutQuint); base.OnHoverLost(state); } protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) { - aspect.ScaleTo(0.75f, 2000, EasingTypes.OutQuint); + aspect.ScaleTo(0.75f, 2000, Easing.OutQuint); return base.OnMouseDown(state, args); } protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) { - aspect.ScaleTo(1, 1000, EasingTypes.OutElastic); + aspect.ScaleTo(1, 1000, Easing.OutElastic); return base.OnMouseUp(state, args); } @@ -280,8 +280,8 @@ namespace osu.Game.Screens.Play if (!Enabled) return false; - box.FlashColour(Color4.White, 500, EasingTypes.OutQuint); - aspect.ScaleTo(1.2f, 2000, EasingTypes.OutQuint); + box.FlashColour(Color4.White, 500, Easing.OutQuint); + aspect.ScaleTo(1.2f, 2000, Easing.OutQuint); bool result = base.OnClick(state); diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs index ea91089aa4..c513daf3d9 100644 --- a/osu.Game/Screens/Play/SongProgress.cs +++ b/osu.Game/Screens/Play/SongProgress.cs @@ -121,19 +121,19 @@ namespace osu.Game.Screens.Play private void updateBarVisibility() { - bar.FadeTo(allowSeeking ? 1 : 0, transition_duration, EasingTypes.In); - MoveTo(new Vector2(0, allowSeeking ? 0 : bottom_bar_height), transition_duration, EasingTypes.In); + bar.FadeTo(allowSeeking ? 1 : 0, transition_duration, Easing.In); + this.MoveTo(new Vector2(0, allowSeeking ? 0 : bottom_bar_height), transition_duration, Easing.In); } protected override void PopIn() { updateBarVisibility(); - FadeIn(500, EasingTypes.OutQuint); + this.FadeIn(500, Easing.OutQuint); } protected override void PopOut() { - FadeOut(100); + this.FadeOut(100); } protected override void Update() diff --git a/osu.Game/Screens/Play/SongProgressGraph.cs b/osu.Game/Screens/Play/SongProgressGraph.cs index 9251ca33a4..541065e532 100644 --- a/osu.Game/Screens/Play/SongProgressGraph.cs +++ b/osu.Game/Screens/Play/SongProgressGraph.cs @@ -25,7 +25,7 @@ namespace osu.Game.Screens.Play return; var firstHit = objects.First().StartTime; - var lastHit = (objects.Last() as IHasEndTime)?.EndTime ?? 0; + var lastHit = objects.Max(o => (o as IHasEndTime)?.EndTime ?? o.StartTime); if (lastHit == 0) lastHit = objects.Last().StartTime; diff --git a/osu.Game/Screens/Ranking/ResultModeButton.cs b/osu.Game/Screens/Ranking/ResultModeButton.cs index 4789a5abb7..50be5c8d00 100644 --- a/osu.Game/Screens/Ranking/ResultModeButton.cs +++ b/osu.Game/Screens/Ranking/ResultModeButton.cs @@ -92,8 +92,8 @@ namespace osu.Game.Screens.Ranking }; } - protected override void OnActivated() => colouredPart.FadeColour(activeColour, 200, EasingTypes.OutQuint); + protected override void OnActivated() => colouredPart.FadeColour(activeColour, 200, Easing.OutQuint); - protected override void OnDeactivated() => colouredPart.FadeColour(inactiveColour, 200, EasingTypes.OutQuint); + protected override void OnDeactivated() => colouredPart.FadeColour(inactiveColour, 200, Easing.OutQuint); } } diff --git a/osu.Game/Screens/Ranking/Results.cs b/osu.Game/Screens/Ranking/Results.cs index 93f6fec862..60ad484673 100644 --- a/osu.Game/Screens/Ranking/Results.cs +++ b/osu.Game/Screens/Ranking/Results.cs @@ -55,7 +55,7 @@ namespace osu.Game.Screens.Ranking protected override void OnEntering(Screen last) { base.OnEntering(last); - (Background as BackgroundScreenBeatmap)?.BlurTo(background_blur, 2500, EasingTypes.OutQuint); + (Background as BackgroundScreenBeatmap)?.BlurTo(background_blur, 2500, Easing.OutQuint); allCircles.ForEach(c => { @@ -67,25 +67,28 @@ namespace osu.Game.Screens.Ranking modeChangeButtons.FadeOut(); currentPage.FadeOut(); - circleOuterBackground.ScaleTo(1, transition_time, EasingTypes.OutQuint); - circleOuterBackground.FadeTo(1, transition_time, EasingTypes.OutQuint); + circleOuterBackground + .FadeIn(transition_time, Easing.OutQuint) + .ScaleTo(1, transition_time, Easing.OutQuint); using (BeginDelayedSequence(transition_time * 0.25f, true)) { - circleOuter.ScaleTo(1, transition_time, EasingTypes.OutQuint); - circleOuter.FadeTo(1, transition_time, EasingTypes.OutQuint); + circleOuter + .FadeIn(transition_time, Easing.OutQuint) + .ScaleTo(1, transition_time, Easing.OutQuint); using (BeginDelayedSequence(transition_time * 0.3f, true)) { - backgroundParallax.FadeIn(transition_time, EasingTypes.OutQuint); + backgroundParallax.FadeIn(transition_time, Easing.OutQuint); - circleInner.ScaleTo(1, transition_time, EasingTypes.OutQuint); - circleInner.FadeTo(1, transition_time, EasingTypes.OutQuint); + circleInner + .FadeIn(transition_time, Easing.OutQuint) + .ScaleTo(1, transition_time, Easing.OutQuint); using (BeginDelayedSequence(transition_time * 0.4f, true)) { - modeChangeButtons.FadeIn(transition_time, EasingTypes.OutQuint); - currentPage.FadeIn(transition_time, EasingTypes.OutQuint); + modeChangeButtons.FadeIn(transition_time, Easing.OutQuint); + currentPage.FadeIn(transition_time, Easing.OutQuint); } } } @@ -95,7 +98,7 @@ namespace osu.Game.Screens.Ranking { allCircles.ForEach(c => { - c.ScaleTo(0, transition_time, EasingTypes.OutSine); + c.ScaleTo(0, transition_time, Easing.OutSine); }); Content.FadeOut(transition_time / 4); diff --git a/osu.Game/Screens/Ranking/ResultsPage.cs b/osu.Game/Screens/Ranking/ResultsPage.cs index 59173748ed..7f381ebf99 100644 --- a/osu.Game/Screens/Ranking/ResultsPage.cs +++ b/osu.Game/Screens/Ranking/ResultsPage.cs @@ -33,8 +33,7 @@ namespace osu.Game.Screens.Ranking protected override void LoadComplete() { base.LoadComplete(); - fill.Delay(400); - fill.FadeInFromZero(600); + fill.Delay(400).FadeInFromZero(600); } [BackgroundDependencyLoader] diff --git a/osu.Game/Screens/Ranking/ResultsPageScore.cs b/osu.Game/Screens/Ranking/ResultsPageScore.cs index 96e63585bf..c5b7b85cf4 100644 --- a/osu.Game/Screens/Ranking/ResultsPageScore.cs +++ b/osu.Game/Screens/Ranking/ResultsPageScore.cs @@ -158,7 +158,7 @@ namespace osu.Game.Screens.Ranking Origin = Anchor.TopCentre, Direction = FillDirection.Horizontal, LayoutDuration = 200, - LayoutEasing = EasingTypes.OutQuint + LayoutEasing = Easing.OutQuint } } } @@ -178,9 +178,9 @@ namespace osu.Game.Screens.Ranking int delay = 0; foreach (var s in statisticsContainer.Children) { - s.FadeOut(); - s.Delay(delay += 200); - s.FadeIn(300 + delay, EasingTypes.Out); + s.FadeOut() + .Then(delay += 200) + .FadeIn(300 + delay, Easing.Out); } }); } @@ -372,7 +372,7 @@ namespace osu.Game.Screens.Ranking { protected override double RollingDuration => 3000; - protected override EasingTypes RollingEasing => EasingTypes.OutPow10; + protected override Easing RollingEasing => Easing.OutPow10; public SlowScoreCounter(uint leading = 0) : base(leading) { diff --git a/osu.Game/Screens/ScreenWhiteBox.cs b/osu.Game/Screens/ScreenWhiteBox.cs index 21239e8030..5596f345d5 100644 --- a/osu.Game/Screens/ScreenWhiteBox.cs +++ b/osu.Game/Screens/ScreenWhiteBox.cs @@ -44,19 +44,20 @@ namespace osu.Game.Screens boxContainer.ScaleTo(0.2f); boxContainer.RotateTo(-20); - Content.Delay(300, true); + using (Content.BeginDelayedSequence(300, true)) + { + boxContainer.ScaleTo(1, transition_time, Easing.OutElastic); + boxContainer.RotateTo(0, transition_time / 2, Easing.OutQuint); - boxContainer.ScaleTo(1, transition_time, EasingTypes.OutElastic); - boxContainer.RotateTo(0, transition_time / 2, EasingTypes.OutQuint); - - textContainer.MoveTo(Vector2.Zero, transition_time, EasingTypes.OutExpo); - Content.FadeIn(transition_time, EasingTypes.OutExpo); + textContainer.MoveTo(Vector2.Zero, transition_time, Easing.OutExpo); + Content.FadeIn(transition_time, Easing.OutExpo); + } } protected override bool OnExiting(Screen next) { - textContainer.MoveTo(new Vector2(DrawSize.X / 16, 0), transition_time, EasingTypes.OutExpo); - Content.FadeOut(transition_time, EasingTypes.OutExpo); + textContainer.MoveTo(new Vector2(DrawSize.X / 16, 0), transition_time, Easing.OutExpo); + Content.FadeOut(transition_time, Easing.OutExpo); return base.OnExiting(next); } @@ -65,16 +66,16 @@ namespace osu.Game.Screens { base.OnSuspending(next); - textContainer.MoveTo(new Vector2(-(DrawSize.X / 16), 0), transition_time, EasingTypes.OutExpo); - Content.FadeOut(transition_time, EasingTypes.OutExpo); + textContainer.MoveTo(new Vector2(-(DrawSize.X / 16), 0), transition_time, Easing.OutExpo); + Content.FadeOut(transition_time, Easing.OutExpo); } protected override void OnResuming(Screen last) { base.OnResuming(last); - textContainer.MoveTo(Vector2.Zero, transition_time, EasingTypes.OutExpo); - Content.FadeIn(transition_time, EasingTypes.OutExpo); + textContainer.MoveTo(Vector2.Zero, transition_time, Easing.OutExpo); + Content.FadeIn(transition_time, Easing.OutExpo); } public ScreenWhiteBox() diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index e135fefc6d..4db07bcc1f 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -18,13 +18,16 @@ using System.Threading.Tasks; using osu.Framework.Allocation; using osu.Framework.Threading; using osu.Framework.Configuration; +using osu.Game.Graphics.Containers; namespace osu.Game.Screens.Select { - internal class BeatmapCarousel : ScrollContainer + internal class BeatmapCarousel : OsuScrollContainer { public BeatmapInfo SelectedBeatmap => selectedPanel?.Beatmap; + public override bool HandleInput => AllowSelection; + public Action BeatmapsChanged; public IEnumerable Beatmaps @@ -133,7 +136,7 @@ namespace osu.Game.Screens.Select public void SelectNext(int direction = 1, bool skipDifficulties = true) { - if (groups.Count == 0) + if (groups.All(g => g.State == BeatmapGroupState.Hidden)) { selectedGroup = null; selectedPanel = null; @@ -228,6 +231,14 @@ namespace osu.Game.Screens.Select private ScheduledDelegate filterTask; + public bool AllowSelection = true; + + public void FlushPendingFilters() + { + if (filterTask?.Completed == false) + Filter(null, false); + } + public void Filter(FilterCriteria newCriteria = null, bool debounce = true) { if (newCriteria != null) @@ -259,6 +270,8 @@ namespace osu.Game.Screens.Select }; filterTask?.Cancel(); + filterTask = null; + if (debounce) filterTask = Scheduler.AddDelayed(perform, 250); else @@ -329,7 +342,7 @@ namespace osu.Game.Screens.Select if (group.State == BeatmapGroupState.Expanded) { - group.Header.MoveToX(-100, 500, EasingTypes.OutExpo); + group.Header.MoveToX(-100, 500, Easing.OutExpo); var headerY = group.Header.Position.Y; foreach (BeatmapPanel panel in group.BeatmapPanels) @@ -337,7 +350,7 @@ namespace osu.Game.Screens.Select if (panel == selectedPanel) selectedY = currentY + panel.DrawHeight / 2 - DrawHeight / 2; - panel.MoveToX(-50, 500, EasingTypes.OutExpo); + panel.MoveToX(-50, 500, Easing.OutExpo); //on first display we want to begin hidden under our group's header. if (panel.Alpha == 0) @@ -348,11 +361,11 @@ namespace osu.Game.Screens.Select } else { - group.Header.MoveToX(0, 500, EasingTypes.OutExpo); + group.Header.MoveToX(0, 500, Easing.OutExpo); foreach (BeatmapPanel panel in group.BeatmapPanels) { - panel.MoveToX(0, 500, EasingTypes.OutExpo); + panel.MoveToX(0, 500, Easing.OutExpo); movePanel(panel, false, animated, ref currentY); } } @@ -367,7 +380,7 @@ namespace osu.Game.Screens.Select private void movePanel(Panel panel, bool advance, bool animated, ref float currentY) { yPositions.Add(currentY); - panel.MoveToY(currentY, animated ? 750 : 0, EasingTypes.OutExpo); + panel.MoveToY(currentY, animated ? 750 : 0, Easing.OutExpo); if (advance) currentY += panel.DrawHeight + 5; diff --git a/osu.Game/Screens/Select/BeatmapDetails.cs b/osu.Game/Screens/Select/BeatmapDetails.cs index 9ad932ff26..972d563ca5 100644 --- a/osu.Game/Screens/Select/BeatmapDetails.cs +++ b/osu.Game/Screens/Select/BeatmapDetails.cs @@ -119,12 +119,12 @@ namespace osu.Game.Screens.Select ratingsGraph.Values = ratings.Select(rating => (float)rating); - ratingsContainer.FadeColour(Color4.White, 500, EasingTypes.Out); + ratingsContainer.FadeColour(Color4.White, 500, Easing.Out); } else if (failOnMissing) ratingsGraph.Values = new float[10]; else - ratingsContainer.FadeColour(Color4.Gray, 500, EasingTypes.Out); + ratingsContainer.FadeColour(Color4.Gray, 500, Easing.Out); if (hasRetriesFails) { @@ -139,7 +139,7 @@ namespace osu.Game.Screens.Select failGraph.Values = fails.Select(fail => (float)fail); retryGraph.Values = retries.Zip(fails, (retry, fail) => retry + MathHelper.Clamp(fail, 0, maxValue)); - retryFailContainer.FadeColour(Color4.White, 500, EasingTypes.Out); + retryFailContainer.FadeColour(Color4.White, 500, Easing.Out); } else if (failOnMissing) { @@ -147,7 +147,7 @@ namespace osu.Game.Screens.Select retryGraph.Values = new float[100]; } else - retryFailContainer.FadeColour(Color4.Gray, 500, EasingTypes.Out); + retryFailContainer.FadeColour(Color4.Gray, 500, Easing.Out); } public BeatmapDetails() @@ -169,7 +169,7 @@ namespace osu.Game.Screens.Select Width = 0.4f, Direction = FillDirection.Vertical, LayoutDuration = 200, - LayoutEasing = EasingTypes.OutQuint, + LayoutEasing = Easing.OutQuint, Children = new[] { description = new MetadataSegment("Description"), diff --git a/osu.Game/Screens/Select/BeatmapInfoWedge.cs b/osu.Game/Screens/Select/BeatmapInfoWedge.cs index 8ba450720b..c2282beae8 100644 --- a/osu.Game/Screens/Select/BeatmapInfoWedge.cs +++ b/osu.Game/Screens/Select/BeatmapInfoWedge.cs @@ -57,14 +57,14 @@ namespace osu.Game.Screens.Select protected override void PopIn() { - MoveToX(0, 800, EasingTypes.OutQuint); - RotateTo(0, 800, EasingTypes.OutQuint); + this.MoveToX(0, 800, Easing.OutQuint); + this.RotateTo(0, 800, Easing.OutQuint); } protected override void PopOut() { - MoveToX(-100, 800, EasingTypes.InQuint); - RotateTo(10, 800, EasingTypes.InQuint); + this.MoveToX(-100, 800, Easing.InQuint); + this.RotateTo(10, 800, Easing.InQuint); } public void UpdateBeatmap(WorkingBeatmap beatmap) @@ -78,7 +78,7 @@ namespace osu.Game.Screens.Select Shear = -Shear, OnLoadComplete = d => { - FadeIn(250); + this.FadeIn(250); lastContainer?.FadeOut(250); lastContainer?.Expire(); diff --git a/osu.Game/Screens/Select/Footer.cs b/osu.Game/Screens/Select/Footer.cs index 33252f78f8..bb6d16da0f 100644 --- a/osu.Game/Screens/Select/Footer.cs +++ b/osu.Game/Screens/Select/Footer.cs @@ -58,7 +58,7 @@ namespace osu.Game.Screens.Select Action = action, }); - private void updateModeLight() => modeLight.FadeColour(buttons.FirstOrDefault(b => b.IsHovered)?.SelectedColour ?? Color4.Transparent, TRANSITION_LENGTH, EasingTypes.OutQuint); + private void updateModeLight() => modeLight.FadeColour(buttons.FirstOrDefault(b => b.IsHovered)?.SelectedColour ?? Color4.Transparent, TRANSITION_LENGTH, Easing.OutQuint); public Footer() { diff --git a/osu.Game/Screens/Select/FooterButton.cs b/osu.Game/Screens/Select/FooterButton.cs index 536bf3971a..ae6c7d3c1e 100644 --- a/osu.Game/Screens/Select/FooterButton.cs +++ b/osu.Game/Screens/Select/FooterButton.cs @@ -89,27 +89,27 @@ namespace osu.Game.Screens.Select protected override bool OnHover(InputState state) { Hovered?.Invoke(); - light.ScaleTo(new Vector2(1, 2), Footer.TRANSITION_LENGTH, EasingTypes.OutQuint); - light.FadeColour(SelectedColour, Footer.TRANSITION_LENGTH, EasingTypes.OutQuint); + light.ScaleTo(new Vector2(1, 2), Footer.TRANSITION_LENGTH, Easing.OutQuint); + light.FadeColour(SelectedColour, Footer.TRANSITION_LENGTH, Easing.OutQuint); return true; } protected override void OnHoverLost(InputState state) { HoverLost?.Invoke(); - light.ScaleTo(new Vector2(1, 1), Footer.TRANSITION_LENGTH, EasingTypes.OutQuint); - light.FadeColour(DeselectedColour, Footer.TRANSITION_LENGTH, EasingTypes.OutQuint); + light.ScaleTo(new Vector2(1, 1), Footer.TRANSITION_LENGTH, Easing.OutQuint); + light.FadeColour(DeselectedColour, Footer.TRANSITION_LENGTH, Easing.OutQuint); } protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) { - box.FadeTo(0.3f, Footer.TRANSITION_LENGTH * 2, EasingTypes.OutQuint); + box.FadeTo(0.3f, Footer.TRANSITION_LENGTH * 2, Easing.OutQuint); return base.OnMouseDown(state, args); } protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) { - box.FadeOut(Footer.TRANSITION_LENGTH, EasingTypes.OutQuint); + box.FadeOut(Footer.TRANSITION_LENGTH, Easing.OutQuint); return base.OnMouseUp(state, args); } @@ -117,7 +117,7 @@ namespace osu.Game.Screens.Select { box.ClearTransforms(); box.Alpha = 1; - box.FadeOut(Footer.TRANSITION_LENGTH * 3, EasingTypes.OutQuint); + box.FadeOut(Footer.TRANSITION_LENGTH * 3, Easing.OutQuint); return base.OnClick(state); } diff --git a/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs b/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs index 2a8e4ca5fb..91bc55f143 100644 --- a/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs @@ -63,8 +63,8 @@ namespace osu.Game.Screens.Select.Leaderboards }; scrollFlow.Add(ls); - ls.Delay(i++ * 50, true); - ls.Show(); + using (BeginDelayedSequence(i++ * 50, true)) + ls.Show(); } scrollContainer.ScrollTo(0f, false); diff --git a/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs b/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs index 48de4c2d3a..c2d2f82b5c 100644 --- a/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs +++ b/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs @@ -61,26 +61,29 @@ namespace osu.Game.Screens.Select.Leaderboards nameLabel.MoveToX(150); break; case Visibility.Visible: - FadeIn(200); - content.MoveToY(0, 800, EasingTypes.OutQuint); + this.FadeIn(200); + content.MoveToY(0, 800, Easing.OutQuint); - Delay(100, true); - avatar.FadeIn(300, EasingTypes.OutQuint); - nameLabel.FadeIn(350, EasingTypes.OutQuint); - - avatar.MoveToX(0, 300, EasingTypes.OutQuint); - nameLabel.MoveToX(0, 350, EasingTypes.OutQuint); - - Delay(250, true); - scoreLabel.FadeIn(200); - scoreRank.FadeIn(200); - - Delay(50, true); - var drawables = new Drawable[] { flagBadgeContainer, maxCombo, accuracy, modsContainer, }; - - for (int i = 0; i < drawables.Length; i++) + using (BeginDelayedSequence(100, true)) { - drawables[i].FadeIn(100 + i * 50); + avatar.FadeIn(300, Easing.OutQuint); + nameLabel.FadeIn(350, Easing.OutQuint); + + avatar.MoveToX(0, 300, Easing.OutQuint); + nameLabel.MoveToX(0, 350, Easing.OutQuint); + + using (BeginDelayedSequence(250, true)) + { + scoreLabel.FadeIn(200); + scoreRank.FadeIn(200); + + using (BeginDelayedSequence(50, true)) + { + var drawables = new Drawable[] { flagBadgeContainer, maxCombo, accuracy, modsContainer, }; + for (int i = 0; i < drawables.Length; i++) + drawables[i].FadeIn(100 + i * 50); + } + } } break; @@ -266,13 +269,13 @@ namespace osu.Game.Screens.Select.Leaderboards protected override bool OnHover(Framework.Input.InputState state) { - background.FadeTo(0.5f, 300, EasingTypes.OutQuint); + background.FadeTo(0.5f, 300, Easing.OutQuint); return base.OnHover(state); } protected override void OnHoverLost(Framework.Input.InputState state) { - background.FadeTo(background_alpha, 200, EasingTypes.OutQuint); + background.FadeTo(background_alpha, 200, Easing.OutQuint); base.OnHoverLost(state); } diff --git a/osu.Game/Screens/Select/Options/BeatmapOptionsButton.cs b/osu.Game/Screens/Select/Options/BeatmapOptionsButton.cs index 58ce5ac564..ab02e8678f 100644 --- a/osu.Game/Screens/Select/Options/BeatmapOptionsButton.cs +++ b/osu.Game/Screens/Select/Options/BeatmapOptionsButton.cs @@ -54,13 +54,13 @@ namespace osu.Game.Screens.Select.Options protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) { - flash.FadeTo(0.1f, 1000, EasingTypes.OutQuint); + flash.FadeTo(0.1f, 1000, Easing.OutQuint); return base.OnMouseDown(state, args); } protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) { - flash.FadeTo(0, 1000, EasingTypes.OutQuint); + flash.FadeTo(0, 1000, Easing.OutQuint); return base.OnMouseUp(state, args); } @@ -68,7 +68,7 @@ namespace osu.Game.Screens.Select.Options { flash.ClearTransforms(); flash.Alpha = 0.9f; - flash.FadeOut(800, EasingTypes.OutExpo); + flash.FadeOut(800, Easing.OutExpo); return base.OnClick(state); } diff --git a/osu.Game/Screens/Select/Options/BeatmapOptionsOverlay.cs b/osu.Game/Screens/Select/Options/BeatmapOptionsOverlay.cs index 6345807ea3..0a410f0e0f 100644 --- a/osu.Game/Screens/Select/Options/BeatmapOptionsOverlay.cs +++ b/osu.Game/Screens/Select/Options/BeatmapOptionsOverlay.cs @@ -29,27 +29,27 @@ namespace osu.Game.Screens.Select.Options { base.PopIn(); - FadeIn(transition_duration, EasingTypes.OutQuint); + this.FadeIn(transition_duration, Easing.OutQuint); if (buttonsContainer.Position.X == 1 || Alpha == 0) buttonsContainer.MoveToX(x_position - x_movement); - holder.ScaleTo(new Vector2(1, 1), transition_duration / 2, EasingTypes.OutQuint); + holder.ScaleTo(new Vector2(1, 1), transition_duration / 2, Easing.OutQuint); - buttonsContainer.MoveToX(x_position, transition_duration, EasingTypes.OutQuint); - buttonsContainer.TransformSpacingTo(Vector2.Zero, transition_duration, EasingTypes.OutQuint); + buttonsContainer.MoveToX(x_position, transition_duration, Easing.OutQuint); + buttonsContainer.TransformSpacingTo(Vector2.Zero, transition_duration, Easing.OutQuint); } protected override void PopOut() { base.PopOut(); - holder.ScaleTo(new Vector2(1, 0), transition_duration / 2, EasingTypes.InSine); + holder.ScaleTo(new Vector2(1, 0), transition_duration / 2, Easing.InSine); - buttonsContainer.MoveToX(x_position + x_movement, transition_duration, EasingTypes.InSine); - buttonsContainer.TransformSpacingTo(new Vector2(200f, 0f), transition_duration, EasingTypes.InSine); + buttonsContainer.MoveToX(x_position + x_movement, transition_duration, Easing.InSine); + buttonsContainer.TransformSpacingTo(new Vector2(200f, 0f), transition_duration, Easing.InSine); - FadeOut(transition_duration, EasingTypes.InQuint); + this.FadeOut(transition_duration, Easing.InQuint); } public BeatmapOptionsOverlay() diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index 3c8545ab65..6f85f541e7 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -125,6 +125,7 @@ namespace osu.Game.Screens.Select } Beatmap.Value.Track.Looping = false; + Beatmap.Disabled = true; LoadComponentAsync(player = new PlayerLoader(new Player()), l => Push(player)); } diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 3b478041fe..286045b5d3 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -109,7 +109,7 @@ namespace osu.Game.Screens.Select Origin = Anchor.CentreRight, SelectionChanged = carouselSelectionChanged, BeatmapsChanged = carouselBeatmapsLoaded, - StartRequested = carouselRaisedStart + StartRequested = carouselRaisedStart, }); Add(FilterControl = new FilterControl { @@ -183,11 +183,14 @@ namespace osu.Game.Screens.Select carousel.Beatmaps = database.GetAllWithChildren(b => !b.DeletePending); Beatmap.ValueChanged += beatmap_ValueChanged; + + Beatmap.DisabledChanged += disabled => carousel.AllowSelection = !disabled; + carousel.AllowSelection = !Beatmap.Disabled; } private void carouselBeatmapsLoaded() { - if (Beatmap.Value != null && Beatmap.Value.BeatmapSetInfo?.DeletePending != false) + if (Beatmap.Value.BeatmapSetInfo?.DeletePending == false) carousel.SelectBeatmap(Beatmap.Value.BeatmapInfo, false); else carousel.SelectNext(); @@ -195,13 +198,15 @@ namespace osu.Game.Screens.Select private void carouselRaisedStart() { - var pendingSelection = selectionChangedDebounce; - selectionChangedDebounce = null; + // if we have a pending filter operation, we want to run it now. + // it could change selection (ie. if the ruleset has been changed). + carousel.FlushPendingFilters(); - if (pendingSelection?.Completed == false) + if (selectionChangedDebounce?.Completed == false) { - pendingSelection.RunTask(); - pendingSelection.Cancel(); // cancel the already scheduled task. + selectionChangedDebounce.RunTask(); + selectionChangedDebounce.Cancel(); // cancel the already scheduled task. + selectionChangedDebounce = null; } OnSelected(); @@ -219,14 +224,26 @@ namespace osu.Game.Screens.Select { Action performLoad = delegate { - bool preview = beatmap?.BeatmapSetInfoID != Beatmap.Value.BeatmapInfo.BeatmapSetInfoID; + // We may be arriving here due to another component changing the bindable Beatmap. + // In these cases, the other component has already loaded the beatmap, so we don't need to do so again. + if (beatmap?.Equals(Beatmap.Value.BeatmapInfo) != true) + { + bool preview = beatmap?.BeatmapSetInfoID != Beatmap.Value.BeatmapInfo.BeatmapSetInfoID; - Beatmap.Value = database.GetWorkingBeatmap(beatmap, Beatmap); + Beatmap.Value = database.GetWorkingBeatmap(beatmap, Beatmap); + ensurePlayingSelected(preview); + } - ensurePlayingSelected(preview); changeBackground(Beatmap.Value); }; + selectionChangedDebounce?.Cancel(); + + if (beatmap?.Equals(beatmapNoDebounce) == true) + return; + + beatmapNoDebounce = beatmap; + if (beatmap == null) { if (!Beatmap.IsDefault) @@ -234,18 +251,13 @@ namespace osu.Game.Screens.Select } else { - selectionChangedDebounce?.Cancel(); - - if (beatmap.Equals(beatmapNoDebounce)) - return; + ruleset.Value = beatmap.Ruleset; if (beatmap.BeatmapSetInfoID == beatmapNoDebounce?.BeatmapSetInfoID) sampleChangeDifficulty.Play(); else sampleChangeBeatmap.Play(); - beatmapNoDebounce = beatmap; - if (beatmap == Beatmap.Value.BeatmapInfo) performLoad(); else @@ -300,14 +312,14 @@ namespace osu.Game.Screens.Select Content.FadeIn(250); - Content.ScaleTo(1, 250, EasingTypes.OutSine); + Content.ScaleTo(1, 250, Easing.OutSine); FilterControl.Activate(); } protected override void OnSuspending(Screen next) { - Content.ScaleTo(1.1f, 250, EasingTypes.InSine); + Content.ScaleTo(1.1f, 250, Easing.InSine); Content.FadeOut(250); diff --git a/osu.Game/Screens/Tournament/Drawings.cs b/osu.Game/Screens/Tournament/Drawings.cs index 246fa17e85..7cd81a924d 100644 --- a/osu.Game/Screens/Tournament/Drawings.cs +++ b/osu.Game/Screens/Tournament/Drawings.cs @@ -47,10 +47,13 @@ namespace osu.Game.Screens.Tournament public ITeamList TeamList; - protected override DependencyContainer CreateLocalDependencies(DependencyContainer parent) => new DependencyContainer(parent); + private DependencyContainer dependencies; + + protected override IReadOnlyDependencyContainer CreateLocalDependencies(IReadOnlyDependencyContainer parent) => + dependencies = new DependencyContainer(base.CreateLocalDependencies(parent)); [BackgroundDependencyLoader] - private void load(TextureStore textures, Storage storage, DependencyContainer dependencies) + private void load(TextureStore textures, Storage storage) { this.storage = storage; diff --git a/osu.Game/Screens/Tournament/ScrollingTeamContainer.cs b/osu.Game/Screens/Tournament/ScrollingTeamContainer.cs index 30f109e598..964fa4457c 100644 --- a/osu.Game/Screens/Tournament/ScrollingTeamContainer.cs +++ b/osu.Game/Screens/Tournament/ScrollingTeamContainer.cs @@ -12,7 +12,6 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; -using osu.Framework.Graphics.Transforms; using osu.Framework.Threading; using OpenTK; using OpenTK.Graphics; @@ -29,7 +28,11 @@ namespace osu.Game.Screens.Tournament private readonly Container tracker; +#pragma warning disable 649 + // set via reflection. private float speed; +#pragma warning restore 649 + private int expiredCount; private float offset; @@ -297,7 +300,8 @@ namespace osu.Game.Screens.Tournament } } - private void speedTo(float value, double duration = 0, EasingTypes easing = EasingTypes.None) => TransformTo(value, duration, easing, new TransformScrollSpeed()); + private void speedTo(float value, double duration = 0, Easing easing = Easing.None) => + this.TransformTo(nameof(speed), value, duration, easing); private enum ScrollState { @@ -308,12 +312,6 @@ namespace osu.Game.Screens.Tournament Scrolling } - public class TransformScrollSpeed : TransformFloat - { - public override void Apply(Drawable d) => ((ScrollingTeamContainer)d).speed = CurrentValue; - public override void ReadIntoStartValue(Drawable d) => StartValue = ((ScrollingTeamContainer)d).speed; - } - public class ScrollingTeam : Container { public const float WIDTH = 58; diff --git a/osu.Game/Users/UserPanel.cs b/osu.Game/Users/UserPanel.cs index 0780c2ffd0..d51df8ccaa 100644 --- a/osu.Game/Users/UserPanel.cs +++ b/osu.Game/Users/UserPanel.cs @@ -169,7 +169,7 @@ namespace osu.Game.Users private void load(OsuColour colours, UserProfileOverlay profile) { Status.ValueChanged += displayStatus; - Status.ValueChanged += status => statusBg.FadeColour(status?.GetAppropriateColour(colours) ?? colours.Gray5, 500, EasingTypes.OutQuint); + Status.ValueChanged += status => statusBg.FadeColour(status?.GetAppropriateColour(colours) ?? colours.Gray5, 500, Easing.OutQuint); base.Action = () => { @@ -190,15 +190,15 @@ namespace osu.Game.Users if (status == null) { - statusBar.ResizeHeightTo(0f, transition_duration, EasingTypes.OutQuint); - statusBar.FadeOut(transition_duration, EasingTypes.OutQuint); - ResizeHeightTo(height - status_height, transition_duration, EasingTypes.OutQuint); + statusBar.ResizeHeightTo(0f, transition_duration, Easing.OutQuint); + statusBar.FadeOut(transition_duration, Easing.OutQuint); + this.ResizeHeightTo(height - status_height, transition_duration, Easing.OutQuint); } else { - statusBar.ResizeHeightTo(status_height, transition_duration, EasingTypes.OutQuint); - statusBar.FadeIn(transition_duration, EasingTypes.OutQuint); - ResizeHeightTo(height, transition_duration, EasingTypes.OutQuint); + statusBar.ResizeHeightTo(status_height, transition_duration, Easing.OutQuint); + statusBar.FadeIn(transition_duration, Easing.OutQuint); + this.ResizeHeightTo(height, transition_duration, Easing.OutQuint); statusMessage.Text = status.Message; } diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 95b339afb5..6031304b26 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -134,7 +134,6 @@ -