1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-20 05:15:37 +08:00

Move header setting to FullscreenOverlay

This commit is contained in:
Dean Herbert 2020-09-03 16:27:31 +09:00
parent dbf44fbaf2
commit 7bcbac6f45
11 changed files with 54 additions and 58 deletions

View File

@ -12,7 +12,7 @@ namespace osu.Game.Tests.Visual.Online
[TestFixture]
public class TestSceneFullscreenOverlay : OsuTestScene
{
private FullscreenOverlay overlay;
private FullscreenOverlay<OverlayHeader> overlay;
protected override void LoadComplete()
{
@ -38,10 +38,10 @@ namespace osu.Game.Tests.Visual.Online
AddAssert("fire count 3", () => fireCount == 3);
}
private class TestFullscreenOverlay : FullscreenOverlay
private class TestFullscreenOverlay : FullscreenOverlay<OverlayHeader>
{
public TestFullscreenOverlay()
: base(OverlayColourScheme.Pink)
: base(OverlayColourScheme.Pink, null)
{
Children = new Drawable[]
{

View File

@ -24,7 +24,7 @@ using osuTK;
namespace osu.Game.Overlays
{
public class BeatmapListingOverlay : FullscreenOverlay
public class BeatmapListingOverlay : FullscreenOverlay<BeatmapListingHeader>
{
[Resolved]
private PreviewTrackManager previewTrackManager { get; set; }
@ -38,7 +38,7 @@ namespace osu.Game.Overlays
private OverlayScrollContainer resultScrollContainer;
public BeatmapListingOverlay()
: base(OverlayColourScheme.Blue)
: base(OverlayColourScheme.Blue, new BeatmapListingHeader())
{
}
@ -65,7 +65,7 @@ namespace osu.Game.Overlays
Direction = FillDirection.Vertical,
Children = new Drawable[]
{
new BeatmapListingHeader(),
Header,
filterControl = new BeatmapListingFilterControl
{
SearchStarted = onSearchStarted,

View File

@ -19,7 +19,7 @@ using osuTK;
namespace osu.Game.Overlays
{
public class BeatmapSetOverlay : FullscreenOverlay
public class BeatmapSetOverlay : FullscreenOverlay<OverlayHeader> // we don't provide a standard header for now.
{
public const float X_PADDING = 40;
public const float Y_PADDING = 25;
@ -39,7 +39,7 @@ namespace osu.Game.Overlays
private readonly Box background;
public BeatmapSetOverlay()
: base(OverlayColourScheme.Blue)
: base(OverlayColourScheme.Blue, null)
{
OverlayScrollContainer scroll;
Info info;

View File

@ -21,14 +21,12 @@ using osu.Game.Overlays.Changelog;
namespace osu.Game.Overlays
{
public class ChangelogOverlay : FullscreenOverlay
public class ChangelogOverlay : FullscreenOverlay<ChangelogHeader>
{
public readonly Bindable<APIChangelogBuild> Current = new Bindable<APIChangelogBuild>();
private Container<ChangelogContent> content;
protected new ChangelogHeader Header;
private SampleChannel sampleBack;
private List<APIChangelogBuild> builds;
@ -36,7 +34,7 @@ namespace osu.Game.Overlays
protected List<APIUpdateStream> Streams;
public ChangelogOverlay()
: base(OverlayColourScheme.Purple)
: base(OverlayColourScheme.Purple, new ChangelogHeader())
{
}
@ -61,11 +59,11 @@ namespace osu.Game.Overlays
Direction = FillDirection.Vertical,
Children = new Drawable[]
{
base.Header = Header = new ChangelogHeader
Header.With(h =>
{
ListingSelected = ShowListing,
Build = { BindTarget = Current }
},
h.ListingSelected = ShowListing;
h.Build.BindTarget = Current;
}),
content = new Container<ChangelogContent>
{
RelativeSizeAxes = Axes.X,

View File

@ -15,17 +15,21 @@ using osu.Game.Overlays.Dashboard.Friends;
namespace osu.Game.Overlays
{
public class DashboardOverlay : FullscreenOverlay
public class DashboardOverlay : FullscreenOverlay<DashboardOverlayHeader>
{
private CancellationTokenSource cancellationToken;
private Container content;
private DashboardOverlayHeader header;
private LoadingLayer loading;
private OverlayScrollContainer scrollFlow;
public DashboardOverlay()
: base(OverlayColourScheme.Purple)
: base(OverlayColourScheme.Purple, new DashboardOverlayHeader
{
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre,
Depth = -float.MaxValue
})
{
}
@ -50,12 +54,7 @@ namespace osu.Game.Overlays
Direction = FillDirection.Vertical,
Children = new Drawable[]
{
Header = header = new DashboardOverlayHeader
{
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre,
Depth = -float.MaxValue
},
Header,
content = new Container
{
RelativeSizeAxes = Axes.X,
@ -72,7 +71,7 @@ namespace osu.Game.Overlays
{
base.LoadComplete();
header.Current.BindValueChanged(onTabChanged);
Header.Current.BindValueChanged(onTabChanged);
}
private bool displayUpdateRequired = true;
@ -84,7 +83,7 @@ namespace osu.Game.Overlays
// We don't want to create a new display on every call, only when exiting from fully closed state.
if (displayUpdateRequired)
{
header.Current.TriggerChange();
Header.Current.TriggerChange();
displayUpdateRequired = false;
}
}
@ -136,7 +135,7 @@ namespace osu.Game.Overlays
if (State.Value == Visibility.Hidden)
return;
header.Current.TriggerChange();
Header.Current.TriggerChange();
}
protected override void Dispose(bool isDisposing)

View File

@ -12,13 +12,14 @@ using osuTK.Graphics;
namespace osu.Game.Overlays
{
public abstract class FullscreenOverlay : WaveOverlayContainer, IOnlineComponent, INamedOverlayComponent
public abstract class FullscreenOverlay<T> : WaveOverlayContainer, IOnlineComponent, INamedOverlayComponent
where T : OverlayHeader
{
public virtual string IconTexture => Header?.Title.IconTexture ?? string.Empty;
public virtual string Title => Header?.Title.Title ?? string.Empty;
public virtual string Description => Header?.Title.Description ?? string.Empty;
public OverlayHeader Header { get; protected set; }
public T Header { get; }
[Resolved]
protected IAPIProvider API { get; private set; }
@ -26,8 +27,10 @@ namespace osu.Game.Overlays
[Cached]
protected readonly OverlayColourProvider ColourProvider;
protected FullscreenOverlay(OverlayColourScheme colourScheme)
protected FullscreenOverlay(OverlayColourScheme colourScheme, T header)
{
Header = header;
ColourProvider = new OverlayColourProvider(colourScheme);
RelativeSizeAxes = Axes.Both;

View File

@ -13,7 +13,7 @@ using osu.Game.Overlays.News.Displays;
namespace osu.Game.Overlays
{
public class NewsOverlay : FullscreenOverlay
public class NewsOverlay : FullscreenOverlay<NewsHeader>
{
private readonly Bindable<string> article = new Bindable<string>(null);
@ -22,7 +22,7 @@ namespace osu.Game.Overlays
private OverlayScrollContainer scrollFlow;
public NewsOverlay()
: base(OverlayColourScheme.Purple)
: base(OverlayColourScheme.Purple, new NewsHeader())
{
}
@ -47,10 +47,10 @@ namespace osu.Game.Overlays
Direction = FillDirection.Vertical,
Children = new Drawable[]
{
Header = new NewsHeader
Header.With(h =>
{
ShowFrontPage = ShowFrontPage
},
h.ShowFrontPage = ShowFrontPage;
}),
content = new Container
{
RelativeSizeAxes = Axes.X,
@ -109,16 +109,14 @@ namespace osu.Game.Overlays
cancellationToken?.Cancel();
loading.Show();
var header = (NewsHeader)Header;
if (e.NewValue == null)
{
header.SetFrontPage();
Header.SetFrontPage();
LoadDisplay(new FrontPageDisplay());
return;
}
header.SetArticle(e.NewValue);
Header.SetArticle(e.NewValue);
LoadDisplay(Empty());
}

View File

@ -17,7 +17,7 @@ using osuTK.Graphics;
namespace osu.Game.Overlays
{
/// <summary>
/// <see cref="OsuScrollContainer"/> which provides <see cref="ScrollToTopButton"/>. Mostly used in <see cref="FullscreenOverlay"/>.
/// <see cref="OsuScrollContainer"/> which provides <see cref="ScrollToTopButton"/>. Mostly used in <see cref="FullscreenOverlay{T}"/>.
/// </summary>
public class OverlayScrollContainer : OsuScrollContainer
{

View File

@ -9,7 +9,7 @@ using osu.Game.Online.API;
namespace osu.Game.Overlays
{
/// <summary>
/// A subview containing online content, to be displayed inside a <see cref="FullscreenOverlay"/>.
/// A subview containing online content, to be displayed inside a <see cref="FullscreenOverlay{T}"/>.
/// </summary>
/// <remarks>
/// Automatically performs a data fetch on load.

View File

@ -17,17 +17,16 @@ using osu.Game.Overlays.Rankings.Tables;
namespace osu.Game.Overlays
{
public class RankingsOverlay : FullscreenOverlay
public class RankingsOverlay : FullscreenOverlay<RankingsOverlayHeader>
{
protected Bindable<Country> Country => header.Country;
protected Bindable<Country> Country => Header.Country;
protected Bindable<RankingsScope> Scope => header.Current;
protected Bindable<RankingsScope> Scope => Header.Current;
private readonly OverlayScrollContainer scrollFlow;
private readonly Container contentContainer;
private readonly LoadingLayer loading;
private readonly Box background;
private readonly RankingsOverlayHeader header;
private APIRequest lastRequest;
private CancellationTokenSource cancellationToken;
@ -36,7 +35,12 @@ namespace osu.Game.Overlays
private IAPIProvider api { get; set; }
public RankingsOverlay()
: base(OverlayColourScheme.Green)
: base(OverlayColourScheme.Green, new RankingsOverlayHeader
{
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre,
Depth = -float.MaxValue
})
{
Children = new Drawable[]
{
@ -55,12 +59,7 @@ namespace osu.Game.Overlays
Direction = FillDirection.Vertical,
Children = new Drawable[]
{
Header = header = new RankingsOverlayHeader
{
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre,
Depth = -float.MaxValue
},
Header,
new Container
{
RelativeSizeAxes = Axes.X,
@ -97,7 +96,7 @@ namespace osu.Game.Overlays
{
base.LoadComplete();
header.Ruleset.BindTo(ruleset);
Header.Ruleset.BindTo(ruleset);
Country.BindValueChanged(_ =>
{

View File

@ -17,19 +17,18 @@ using osuTK;
namespace osu.Game.Overlays
{
public class UserProfileOverlay : FullscreenOverlay
public class UserProfileOverlay : FullscreenOverlay<ProfileHeader>
{
private ProfileSection lastSection;
private ProfileSection[] sections;
private GetUserRequest userReq;
protected new ProfileHeader Header;
private ProfileSectionsContainer sectionsContainer;
private ProfileSectionTabControl tabs;
public const float CONTENT_X_MARGIN = 70;
public UserProfileOverlay()
: base(OverlayColourScheme.Pink)
: base(OverlayColourScheme.Pink, new ProfileHeader())
{
}
@ -77,7 +76,7 @@ namespace osu.Game.Overlays
Add(sectionsContainer = new ProfileSectionsContainer
{
ExpandableHeader = base.Header = Header = new ProfileHeader(),
ExpandableHeader = Header,
FixedHeader = tabs,
HeaderBackground = new Box
{