diff --git a/osu-resources b/osu-resources index b90c4ed490..ffccbeb98d 160000 --- a/osu-resources +++ b/osu-resources @@ -1 +1 @@ -Subproject commit b90c4ed490f76f2995662b3a8af3a32b8756a012 +Subproject commit ffccbeb98dc9e8f0965520270b5885e63f244c83 diff --git a/osu.Game/Screens/Menu/ButtonSystem.cs b/osu.Game/Screens/Menu/ButtonSystem.cs index 2f418d2f88..72db445052 100644 --- a/osu.Game/Screens/Menu/ButtonSystem.cs +++ b/osu.Game/Screens/Menu/ButtonSystem.cs @@ -245,8 +245,14 @@ namespace osu.Game.Screens.Menu buttonArea.FadeIn(300); if (lastState == MenuState.Initial) + { buttonArea.Delay(150, true); + if (osuLogo.Scale.X > 0.5f) + using (osuLogo.BeginDelayedSequence(200, true)) + osuLogo.Impact(); + } + Scheduler.AddDelayed(() => toolbar?.Show(), 150); foreach (Button b in buttonsTopLevel) diff --git a/osu.Game/Screens/Menu/OsuLogo.cs b/osu.Game/Screens/Menu/OsuLogo.cs index f3fffedd43..e28adeacff 100644 --- a/osu.Game/Screens/Menu/OsuLogo.cs +++ b/osu.Game/Screens/Menu/OsuLogo.cs @@ -35,7 +35,7 @@ namespace osu.Game.Screens.Menu public Action Action; - public float SizeForFlow => logo == null ? 0 : logo.DrawSize.X * logo.Scale.X * logoBounceContainer.Scale.X * logoHoverContainer.Scale.X * 0.78f; + public float SizeForFlow => logo == null ? 0 : logo.DrawSize.X * logo.Scale.X * logoBounceContainer.Scale.X * logoHoverContainer.Scale.X * 0.74f; private readonly Sprite ripple; @@ -63,8 +63,14 @@ namespace osu.Game.Screens.Menu public bool Interactive = true; private readonly Box flashLayer; + private readonly Container impactContainer; + + private const float default_size = 480; + public OsuLogo() { + Size = new Vector2(default_size); + Anchor = Anchor.Centre; Origin = Anchor.Centre; @@ -92,7 +98,7 @@ namespace osu.Game.Screens.Menu Anchor = Anchor.Centre, Origin = Anchor.Centre, RelativeSizeAxes = Axes.Both, - Scale = new Vector2(0.8f), + Scale = new Vector2(0.88f), Masking = true, Children = new Drawable[] { @@ -137,6 +143,7 @@ namespace osu.Game.Screens.Menu { Anchor = Anchor.Centre, Origin = Anchor.Centre, + RelativeSizeAxes = Axes.Both, Children = new Drawable[] { ripple = new Sprite @@ -148,11 +155,30 @@ namespace osu.Game.Screens.Menu } } }, + impactContainer = new CircularContainer + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Alpha = 0, + BorderColour = Color4.White, + RelativeSizeAxes = Axes.Both, + BorderThickness = 10, + Masking = true, + Children = new Drawable[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + AlwaysPresent = true, + Alpha = 0, + } + } + }, new MenuVisualisation { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Size = logo.Size, + RelativeSizeAxes = Axes.Both, BlendingMode = BlendingMode.Additive, Alpha = 0.2f, } @@ -211,7 +237,8 @@ namespace osu.Game.Screens.Menu protected override bool OnHover(InputState state) { if (!Interactive) return false; - logoHoverContainer.ScaleTo(1.2f, 500, EasingTypes.OutElastic); + + logoHoverContainer.ScaleTo(1.1f, 500, EasingTypes.OutElastic); return true; } @@ -219,5 +246,12 @@ namespace osu.Game.Screens.Menu { logoHoverContainer.ScaleTo(1, 500, EasingTypes.OutElastic); } + + public void Impact() + { + impactContainer.FadeOutFromOne(250, EasingTypes.In); + impactContainer.ScaleTo(0.96f); + impactContainer.ScaleTo(1.12f, 250); + } } } \ No newline at end of file