From f1aa60c0f1c2fec417db5bc05d8d6dd2eb3dd391 Mon Sep 17 00:00:00 2001 From: CenTdemeern1 Date: Thu, 31 Mar 2022 16:26:53 +0200 Subject: [PATCH 1/3] Make the clock feel more like a button --- osu.Game/Overlays/Toolbar/ToolbarClock.cs | 92 +++++++++++++++++------ 1 file changed, 68 insertions(+), 24 deletions(-) diff --git a/osu.Game/Overlays/Toolbar/ToolbarClock.cs b/osu.Game/Overlays/Toolbar/ToolbarClock.cs index ad5c9ac7a1..02230c13cf 100644 --- a/osu.Game/Overlays/Toolbar/ToolbarClock.cs +++ b/osu.Game/Overlays/Toolbar/ToolbarClock.cs @@ -3,54 +3,83 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; +using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Shapes; using osu.Framework.Input.Events; using osu.Game.Configuration; +using osu.Game.Graphics; +using osu.Game.Graphics.Containers; +using osu.Game.Graphics.UserInterface; using osuTK; +using osuTK.Graphics; + namespace osu.Game.Overlays.Toolbar { - public class ToolbarClock : CompositeDrawable + public class ToolbarClock : OsuClickableContainer { private Bindable clockDisplayMode; + protected Box HoverBackground; + private readonly Box flashBackground; + private readonly FillFlowContainer clockContainer; + private DigitalClockDisplay digital; private AnalogClockDisplay analog; public ToolbarClock() + : base(HoverSampleSet.Toolbar) { RelativeSizeAxes = Axes.Y; AutoSizeAxes = Axes.X; - Padding = new MarginPadding(10); + Children = new Drawable[] + { + HoverBackground = new Box + { + RelativeSizeAxes = Axes.Both, + Colour = OsuColour.Gray(80).Opacity(180), + Blending = BlendingParameters.Additive, + Alpha = 0, + }, + flashBackground = new Box + { + RelativeSizeAxes = Axes.Both, + Alpha = 0, + Colour = Color4.White.Opacity(100), + Blending = BlendingParameters.Additive, + }, + + clockContainer = new FillFlowContainer + { + RelativeSizeAxes = Axes.Y, + AutoSizeAxes = Axes.X, + Direction = FillDirection.Horizontal, + Spacing = new Vector2(5), + Padding = new MarginPadding(10), + Children = new Drawable[] + { + analog = new AnalogClockDisplay + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + }, + digital = new DigitalClockDisplay + { + Anchor = Anchor.CentreLeft, + Origin = Anchor.CentreLeft, + } + } + } + }; } [BackgroundDependencyLoader] private void load(OsuConfigManager config) { clockDisplayMode = config.GetBindable(OsuSetting.ToolbarClockDisplayMode); - - InternalChild = new FillFlowContainer - { - RelativeSizeAxes = Axes.Y, - AutoSizeAxes = Axes.X, - Direction = FillDirection.Horizontal, - Spacing = new Vector2(5), - Children = new Drawable[] - { - analog = new AnalogClockDisplay - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - }, - digital = new DigitalClockDisplay - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - } - } - }; } protected override void LoadComplete() @@ -72,8 +101,23 @@ namespace osu.Game.Overlays.Toolbar protected override bool OnClick(ClickEvent e) { + flashBackground.FadeOutFromOne(800, Easing.OutQuint); + cycleDisplayMode(); - return true; + + return base.OnClick(e); + } + + protected override bool OnHover(HoverEvent e) + { + HoverBackground.FadeIn(200); + + return base.OnHover(e); + } + + protected override void OnHoverLost(HoverLostEvent e) + { + HoverBackground.FadeOut(200); } private void cycleDisplayMode() From c64a90b39e86a38b7ce5a54ff950ee8f7b986321 Mon Sep 17 00:00:00 2001 From: CenTdemeern1 Date: Thu, 31 Mar 2022 17:21:50 +0200 Subject: [PATCH 2/3] Remove a newline to comply with codefactor --- osu.Game/Overlays/Toolbar/ToolbarClock.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.Game/Overlays/Toolbar/ToolbarClock.cs b/osu.Game/Overlays/Toolbar/ToolbarClock.cs index 02230c13cf..48de803b3a 100644 --- a/osu.Game/Overlays/Toolbar/ToolbarClock.cs +++ b/osu.Game/Overlays/Toolbar/ToolbarClock.cs @@ -15,7 +15,6 @@ using osu.Game.Graphics.UserInterface; using osuTK; using osuTK.Graphics; - namespace osu.Game.Overlays.Toolbar { public class ToolbarClock : OsuClickableContainer From bdb21b17f721ab0a9b9f302439cd62033eafae14 Mon Sep 17 00:00:00 2001 From: CenTdemeern1 Date: Thu, 31 Mar 2022 20:39:26 +0200 Subject: [PATCH 3/3] Fix my code according to the changes @bdach requested --- osu.Game/Overlays/Toolbar/ToolbarClock.cs | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/osu.Game/Overlays/Toolbar/ToolbarClock.cs b/osu.Game/Overlays/Toolbar/ToolbarClock.cs index 48de803b3a..22a96603dc 100644 --- a/osu.Game/Overlays/Toolbar/ToolbarClock.cs +++ b/osu.Game/Overlays/Toolbar/ToolbarClock.cs @@ -21,9 +21,8 @@ namespace osu.Game.Overlays.Toolbar { private Bindable clockDisplayMode; - protected Box HoverBackground; - private readonly Box flashBackground; - private readonly FillFlowContainer clockContainer; + private Box hoverBackground; + private Box flashBackground; private DigitalClockDisplay digital; private AnalogClockDisplay analog; @@ -33,10 +32,16 @@ namespace osu.Game.Overlays.Toolbar { RelativeSizeAxes = Axes.Y; AutoSizeAxes = Axes.X; + } + + [BackgroundDependencyLoader] + private void load(OsuConfigManager config) + { + clockDisplayMode = config.GetBindable(OsuSetting.ToolbarClockDisplayMode); Children = new Drawable[] { - HoverBackground = new Box + hoverBackground = new Box { RelativeSizeAxes = Axes.Both, Colour = OsuColour.Gray(80).Opacity(180), @@ -50,8 +55,7 @@ namespace osu.Game.Overlays.Toolbar Colour = Color4.White.Opacity(100), Blending = BlendingParameters.Additive, }, - - clockContainer = new FillFlowContainer + new FillFlowContainer { RelativeSizeAxes = Axes.Y, AutoSizeAxes = Axes.X, @@ -75,12 +79,6 @@ namespace osu.Game.Overlays.Toolbar }; } - [BackgroundDependencyLoader] - private void load(OsuConfigManager config) - { - clockDisplayMode = config.GetBindable(OsuSetting.ToolbarClockDisplayMode); - } - protected override void LoadComplete() { base.LoadComplete(); @@ -109,14 +107,16 @@ namespace osu.Game.Overlays.Toolbar protected override bool OnHover(HoverEvent e) { - HoverBackground.FadeIn(200); + hoverBackground.FadeIn(200); return base.OnHover(e); } protected override void OnHoverLost(HoverLostEvent e) { - HoverBackground.FadeOut(200); + hoverBackground.FadeOut(200); + + base.OnHoverLost(e); } private void cycleDisplayMode()