From d07d94d6061c009db04b61c08c986ad804ac6c35 Mon Sep 17 00:00:00 2001 From: EVAST9919 Date: Thu, 18 May 2017 07:09:36 +0300 Subject: [PATCH] better resizing --- .../Screens/Play/Options/OptionContainer.cs | 24 +++++---- .../Screens/Play/Options/OptionDropdown.cs | 50 +++++++++++++++++++ .../Screens/Play/Options/PlaybackOptions.cs | 42 ++++++++-------- osu.Game/osu.Game.csproj | 1 + 4 files changed, 85 insertions(+), 32 deletions(-) create mode 100644 osu.Game/Screens/Play/Options/OptionDropdown.cs diff --git a/osu.Game/Screens/Play/Options/OptionContainer.cs b/osu.Game/Screens/Play/Options/OptionContainer.cs index bf5d4a1863..7f226eb3d2 100644 --- a/osu.Game/Screens/Play/Options/OptionContainer.cs +++ b/osu.Game/Screens/Play/Options/OptionContainer.cs @@ -3,6 +3,7 @@ using OpenTK; using OpenTK.Graphics; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; @@ -19,7 +20,8 @@ namespace osu.Game.Screens.Play.Options /// public abstract string Title { get; } - private readonly FillFlowContainer content; + private readonly OptionDropdown content; + private readonly SimpleButton button; private bool contentIsVisible; protected OptionContainer() @@ -65,7 +67,7 @@ namespace osu.Game.Screens.Play.Options Font = @"Exo2.0-Bold", Margin = new MarginPadding { Left = 10 }, }, - new SimpleButton + button = new SimpleButton { Origin = Anchor.Centre, Anchor = Anchor.CentreRight, @@ -76,21 +78,21 @@ namespace osu.Game.Screens.Play.Options }, } }, - content = new FillFlowContainer + content = new OptionDropdown { - Direction = FillDirection.Vertical, RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Origin = Anchor.TopCentre, - Anchor = Anchor.TopCentre, - Padding = new MarginPadding(15), - Spacing = new Vector2(0, 10), } } }, }; } + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + content.StateChanged += (c, s) => button.FadeColour(s == Visibility.Visible ? colours.Yellow : Color4.White, 200, EasingTypes.OutQuint); + } + public new void Add(Drawable drawable) { content.Add(drawable); @@ -98,12 +100,12 @@ namespace osu.Game.Screens.Play.Options private void triggerContentVisibility() { + contentIsVisible = !contentIsVisible; + if (contentIsVisible) content.Show(); else content.Hide(); - - contentIsVisible = !contentIsVisible; } } } diff --git a/osu.Game/Screens/Play/Options/OptionDropdown.cs b/osu.Game/Screens/Play/Options/OptionDropdown.cs new file mode 100644 index 0000000000..37d908b925 --- /dev/null +++ b/osu.Game/Screens/Play/Options/OptionDropdown.cs @@ -0,0 +1,50 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using OpenTK; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; + +namespace osu.Game.Screens.Play.Options +{ + public class OptionDropdown : OverlayContainer + { + private const float transition_duration = 600; + + private FillFlowContainer content; + + public OptionDropdown() + { + Children = new Drawable[] + { + content = new FillFlowContainer + { + Direction = FillDirection.Vertical, + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Origin = Anchor.TopCentre, + Anchor = Anchor.TopCentre, + Padding = new MarginPadding(15), + Spacing = new Vector2(0, 10), + } + }; + } + + public new void Add(Drawable drawable) + { + content.Add(drawable); + } + + protected override void PopIn() + { + ResizeTo(new Vector2(1, content.Height), transition_duration, EasingTypes.OutQuint); + FadeIn(transition_duration, EasingTypes.OutQuint); + } + + protected override void PopOut() + { + ResizeTo(new Vector2(1, 0), transition_duration, EasingTypes.OutQuint); + FadeOut(transition_duration); + } + } +} diff --git a/osu.Game/Screens/Play/Options/PlaybackOptions.cs b/osu.Game/Screens/Play/Options/PlaybackOptions.cs index 1cbc230170..d34b864a5a 100644 --- a/osu.Game/Screens/Play/Options/PlaybackOptions.cs +++ b/osu.Game/Screens/Play/Options/PlaybackOptions.cs @@ -1,24 +1,24 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework.Allocation; -using osu.Game.Configuration; -using osu.Game.Overlays.Settings; - -namespace osu.Game.Screens.Play.Options -{ - public class PlaybackOptions : OptionContainer - { - public override string Title => @"PLAYBACK"; - - [BackgroundDependencyLoader] - private void load(OsuConfigManager config) - { - Add(new SettingsSlider - { - LabelText = "Playback speed", - Bindable = config.GetBindable(OsuSetting.PlaybackSpeed), - }); - } - } -} +using osu.Framework.Allocation; +using osu.Game.Configuration; +using osu.Game.Overlays.Settings; + +namespace osu.Game.Screens.Play.Options +{ + public class PlaybackOptions : OptionContainer + { + public override string Title => @"PLAYBACK"; + + [BackgroundDependencyLoader] + private void load(OsuConfigManager config) + { + Add(new SettingsSlider + { + LabelText = "Playback speed", + Bindable = config.GetBindable(OsuSetting.PlaybackSpeed), + }); + } + } +} diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 3872c5c58a..64a24e32c7 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -236,6 +236,7 @@ +