Embed behaviour into UserCoverBackground

This commit is contained in:
smoogipoo 2020-07-28 20:50:55 +09:00
parent 54d2f2c8cd
commit 42e88c53d7
5 changed files with 22 additions and 18 deletions

View File

@ -41,7 +41,7 @@ namespace osu.Game.Overlays.Profile
Masking = true, Masking = true,
Children = new Drawable[] Children = new Drawable[]
{ {
coverContainer = new UserCoverBackground coverContainer = new ProfileCoverBackground
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
}, },
@ -100,5 +100,10 @@ namespace osu.Game.Overlays.Profile
IconTexture = "Icons/profile"; IconTexture = "Icons/profile";
} }
} }
private class ProfileCoverBackground : UserCoverBackground
{
protected override double LoadDelay => 0;
}
} }
} }

View File

@ -70,14 +70,11 @@ namespace osu.Game.Screens.Ranking.Contracted
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Colour = Color4Extensions.FromHex("444") Colour = Color4Extensions.FromHex("444")
}, },
new DelayedLoadUnloadWrapper(() => new UserCoverBackground new UserCoverBackground
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
User = score.User, User = score.User,
Colour = ColourInfo.GradientVertical(Color4.White.Opacity(0.5f), Color4Extensions.FromHex("#444").Opacity(0)) Colour = ColourInfo.GradientVertical(Color4.White.Opacity(0.5f), Color4Extensions.FromHex("#444").Opacity(0))
}, 300, 5000)
{
RelativeSizeAxes = Axes.Both
}, },
new FillFlowContainer new FillFlowContainer
{ {

View File

@ -146,15 +146,12 @@ namespace osu.Game.Screens.Ranking
Children = new[] Children = new[]
{ {
middleLayerBackground = new Box { RelativeSizeAxes = Axes.Both }, middleLayerBackground = new Box { RelativeSizeAxes = Axes.Both },
new DelayedLoadUnloadWrapper(() => new UserCoverBackground new UserCoverBackground
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
User = Score.User, User = Score.User,
Colour = ColourInfo.GradientVertical(Color4.White.Opacity(0.5f), Color4Extensions.FromHex("#444").Opacity(0)) Colour = ColourInfo.GradientVertical(Color4.White.Opacity(0.5f), Color4Extensions.FromHex("#444").Opacity(0))
}, 300, 5000) }
{
RelativeSizeAxes = Axes.Both
},
} }
}, },
middleLayerContentContainer = new Container { RelativeSizeAxes = Axes.Both } middleLayerContentContainer = new Container { RelativeSizeAxes = Axes.Both }

View File

@ -1,6 +1,7 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System;
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics; using osu.Framework.Graphics;
@ -23,6 +24,16 @@ namespace osu.Game.Users
protected override Drawable CreateDrawable(User user) => new Cover(user); protected override Drawable CreateDrawable(User user) => new Cover(user);
protected override double LoadDelay => 300;
/// <summary>
/// Delay before the background is unloaded while off-screen.
/// </summary>
protected virtual double UnloadDelay => 5000;
protected override DelayedLoadWrapper CreateDelayedLoadWrapper(Func<Drawable> createContentFunc, double timeBeforeLoad)
=> new DelayedLoadUnloadWrapper(createContentFunc, timeBeforeLoad, UnloadDelay);
[LongRunningLoad] [LongRunningLoad]
private class Cover : CompositeDrawable private class Cover : CompositeDrawable
{ {

View File

@ -4,7 +4,6 @@
using System; using System;
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Shapes;
using osu.Game.Graphics; using osu.Game.Graphics;
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
@ -25,7 +24,7 @@ namespace osu.Game.Users
protected Action ViewProfile { get; private set; } protected Action ViewProfile { get; private set; }
protected DelayedLoadUnloadWrapper Background { get; private set; } protected Drawable Background { get; private set; }
protected UserPanel(User user) protected UserPanel(User user)
{ {
@ -56,17 +55,12 @@ namespace osu.Game.Users
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Colour = ColourProvider?.Background5 ?? Colours.Gray1 Colour = ColourProvider?.Background5 ?? Colours.Gray1
}, },
Background = new DelayedLoadUnloadWrapper(() => new UserCoverBackground Background = new UserCoverBackground
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
User = User, User = User,
}, 300, 5000)
{
Anchor = Anchor.CentreRight,
Origin = Anchor.CentreRight,
RelativeSizeAxes = Axes.Both,
}, },
CreateLayout() CreateLayout()
}); });