// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Allocation; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osuTK; using osuTK.Graphics; namespace osu.Game.Screens.Edit.Components.Menus { public class EditorScreenSwitcherControl : OsuTabControl { public EditorScreenSwitcherControl() { AutoSizeAxes = Axes.X; RelativeSizeAxes = Axes.Y; TabContainer.RelativeSizeAxes &= ~Axes.X; TabContainer.AutoSizeAxes = Axes.X; TabContainer.Padding = new MarginPadding(); AddInternal(new Box { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, RelativeSizeAxes = Axes.X, Height = 1, Colour = Color4.White.Opacity(0.2f), }); } [BackgroundDependencyLoader] private void load(OsuColour colours) { AccentColour = colours.Yellow; } protected override Dropdown CreateDropdown() => null; protected override TabItem CreateTabItem(EditorScreenMode value) => new TabItem(value); private class TabItem : OsuTabItem { private const float transition_length = 250; public TabItem(EditorScreenMode value) : base(value) { Text.Margin = new MarginPadding(); Text.Anchor = Anchor.CentreLeft; Text.Origin = Anchor.CentreLeft; } protected override void OnActivated() { base.OnActivated(); Bar.ScaleTo(new Vector2(1, 5), transition_length, Easing.OutQuint); } protected override void OnDeactivated() { base.OnDeactivated(); Bar.ScaleTo(Vector2.One, transition_length, Easing.OutQuint); } } } }