// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System.Diagnostics; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Localisation; using osu.Game.Graphics; using osu.Game.Overlays.Profile.Header; using osu.Game.Overlays.Profile.Header.Components; using osu.Game.Resources.Localisation.Web; namespace osu.Game.Overlays.Profile { public partial class ProfileHeader : TabControlOverlayHeader { public Bindable User = new Bindable(); private CentreHeaderContainer centreHeaderContainer; private DetailHeaderContainer detailHeaderContainer; public ProfileHeader() { ContentSidePadding = WaveOverlayContainer.HORIZONTAL_PADDING; TabControl.AddItem(LayoutStrings.HeaderUsersShow); // todo: pending implementation. // TabControl.AddItem(LayoutStrings.HeaderUsersModding); // Haphazardly guaranteed by OverlayHeader constructor (see CreateBackground / CreateContent). Debug.Assert(centreHeaderContainer != null); Debug.Assert(detailHeaderContainer != null); } protected override Drawable CreateBackground() => Empty(); protected override Drawable CreateContent() => new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, Children = new Drawable[] { new TopHeaderContainer { RelativeSizeAxes = Axes.X, User = { BindTarget = User }, }, new BannerHeaderContainer { User = { BindTarget = User }, }, new BadgeHeaderContainer { RelativeSizeAxes = Axes.X, User = { BindTarget = User }, }, detailHeaderContainer = new DetailHeaderContainer { RelativeSizeAxes = Axes.X, User = { BindTarget = User }, }, centreHeaderContainer = new CentreHeaderContainer { RelativeSizeAxes = Axes.X, User = { BindTarget = User }, }, new BottomHeaderContainer { RelativeSizeAxes = Axes.X, User = { BindTarget = User }, }, } }; protected override OverlayTitle CreateTitle() => new ProfileHeaderTitle(); protected override Drawable CreateTabControlContent() => new ProfileRulesetSelector { User = { BindTarget = User } }; private partial class ProfileHeaderTitle : OverlayTitle { public ProfileHeaderTitle() { Title = PageTitleStrings.MainUsersControllerDefault; Icon = HexaconsIcons.Profile; } } } }