// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using OpenTK; using OpenTK.Graphics; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Game.Graphics.Sprites; namespace osu.Game.Graphics.UserInterface { public abstract class SettingsContainer : Container { /// /// The title of this option. /// public abstract string Title { get; } private const float transition_duration = 600; private readonly FillFlowContainer content; private readonly SimpleButton button; private bool buttonIsPressed; protected SettingsContainer() { AutoSizeAxes = Axes.Y; Width = 250; Masking = true; CornerRadius = 5; BorderColour = Color4.Black; BorderThickness = 2; Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = Color4.Black, Alpha = 0.5f, }, new FillFlowContainer { Direction = FillDirection.Vertical, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] { new Container { RelativeSizeAxes = Axes.X, Height = 30, Origin = Anchor.TopCentre, Anchor = Anchor.TopCentre, Children = new Drawable[] { new OsuSpriteText { Origin = Anchor.CentreLeft, Anchor = Anchor.CentreLeft, Text = Title, TextSize = 17, Font = @"Exo2.0-Bold", Margin = new MarginPadding { Left = 10 }, }, button = new SimpleButton { Origin = Anchor.Centre, Anchor = Anchor.CentreRight, Position = new Vector2(-15,0), Icon = FontAwesome.fa_bars, Scale = new Vector2(0.7f), Action = () => triggerContentVisibility(), }, } }, 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), } } }, }; button.TriggerClick(); } public new void Add(Drawable drawable) { content.Add(drawable); } private void triggerContentVisibility() { buttonIsPressed = !buttonIsPressed; button.FadeColour(buttonIsPressed ? OsuColour.FromHex(@"ffcc22") : Color4.White, 200, EasingTypes.OutQuint); if (buttonIsPressed) content.Show(); else content.Hide(); } } }