diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs index fddf2d0d55..f37e6db310 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs @@ -26,6 +26,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private readonly SpinnerBackground background; private readonly Container circleContainer; private readonly CirclePiece circle; + private readonly GlowPiece glow; private readonly TextAwesome symbol; @@ -42,7 +43,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables RelativeSizeAxes = Axes.Both; // we are slightly bigger than our parent, to clip the top and bottom of the circle - Height = 1.2f; + Height = 1.3f; spinner = s; @@ -55,6 +56,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables Origin = Anchor.Centre, Children = new Drawable[] { + glow = new GlowPiece(), circle = new CirclePiece { Position = Vector2.Zero, @@ -69,7 +71,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables TextSize = 48, Icon = FontAwesome.fa_asterisk, Shadow = false, - } + }, } }, mainContainer = new AspectContainer @@ -81,7 +83,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables { background = new SpinnerBackground { - Alpha = 0.2f, + Alpha = 0.6f, Anchor = Anchor.Centre, Origin = Anchor.Centre, }, @@ -112,9 +114,15 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables { disc.Complete = true; - disc.FadeAccent(completeColour, 500); - background.FadeAccent(completeColour, 500); - circle.FadeColour(completeColour, 500); + const float duration = 200; + + disc.FadeAccent(completeColour, duration); + + background.FadeAccent(completeColour, duration); + background.FadeOut(duration); + + circle.FadeColour(completeColour, duration); + glow.FadeColour(completeColour, duration); } if (!userTriggered && Time.Current >= spinner.EndTime) @@ -146,12 +154,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables [BackgroundDependencyLoader] private void load(OsuColour colours) { - normalColour = colours.BlueDark; - completeColour = colours.YellowLight.Opacity(0.8f); + normalColour = colours.SpinnerFill; + background.AccentColour = colours.SpinnerBackground; + + completeColour = colours.YellowLight.Opacity(0.6f); disc.AccentColour = normalColour; - background.AccentColour = normalColour; - circle.Colour = normalColour; + circle.Colour = colours.BlueDarker; + glow.Colour = colours.BlueDarker; } protected override void UpdateAfterChildren() diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs index 5b163b99a4..1c54f9f893 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs @@ -2,7 +2,6 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using OpenTK.Graphics; -using osu.Framework.Allocation; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -15,12 +14,25 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces { public override bool HandleInput => false; - protected Sprite Disc; + protected Box Disc; public Color4 AccentColour { - get { return Disc.Colour; } - set { Disc.Colour = value; } + get + { + return Disc.Colour; + } + set + { + Disc.Colour = value; + + EdgeEffect = new EdgeEffect + { + Type = EdgeEffectType.Glow, + Radius = 14, + Colour = value.Opacity(0.3f), + }; + } } public SpinnerBackground() @@ -39,16 +51,5 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces }, }; } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - EdgeEffect = new EdgeEffect - { - Type = EdgeEffectType.Glow, - Radius = 14, - Colour = colours.BlueLight.Opacity(0.3f), - }; - } } } diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs index 2d50754b4f..4e4d4e30b9 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs @@ -24,8 +24,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces private readonly SpinnerBackground background; - private const float idle_alpha = 0.1f; - private const float tracking_alpha = 0.3f; + private const float idle_alpha = 0.2f; + private const float tracking_alpha = 0.4f; public SpinnerDisc(Spinner s) { @@ -127,9 +127,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces if (Complete && updateCompleteTick()) { background.Flush(flushType: typeof(TransformAlpha)); - background.FadeTo(0.75f, 60, EasingTypes.OutExpo); + background.FadeTo(tracking_alpha + 0.4f, 60, EasingTypes.OutExpo); background.Delay(60); - background.FadeTo(0.5f, 250, EasingTypes.OutQuint); + background.FadeTo(tracking_alpha, 250, EasingTypes.OutQuint); } RotateTo(currentRotation / 2, validAndTracking ? 500 : 1500, EasingTypes.OutExpo); diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerTicks.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerTicks.cs index d08051eed6..dc3d18d40a 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerTicks.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerTicks.cs @@ -53,8 +53,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces Size = new Vector2(60, 10), Origin = Anchor.Centre, Position = new Vector2( - 0.5f + (float)Math.Sin((float)i / count * 2 * MathHelper.Pi) / 2 * 0.9f, - 0.5f + (float)Math.Cos((float)i / count * 2 * MathHelper.Pi) / 2 * 0.9f + 0.5f + (float)Math.Sin((float)i / count * 2 * MathHelper.Pi) / 2 * 0.86f, + 0.5f + (float)Math.Cos((float)i / count * 2 * MathHelper.Pi) / 2 * 0.86f ), Rotation = -(float)i / count * 360 + 90, Children = new[] diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index 3d83668d07..b44c3a8eb8 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -87,5 +87,8 @@ namespace osu.Game.Graphics public readonly Color4 RedDarker = FromHex(@"870000"); public readonly Color4 ChatBlue = FromHex(@"17292e"); + + public readonly Color4 SpinnerBackground = FromHex(@"05222b"); + public readonly Color4 SpinnerFill = FromHex(@"002c3c"); } }