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,
Children = new Drawable[]
{
coverContainer = new UserCoverBackground
coverContainer = new ProfileCoverBackground
{
RelativeSizeAxes = Axes.Both,
},
@ -100,5 +100,10 @@ namespace osu.Game.Overlays.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,
Colour = Color4Extensions.FromHex("444")
},
new DelayedLoadUnloadWrapper(() => new UserCoverBackground
new UserCoverBackground
{
RelativeSizeAxes = Axes.Both,
User = score.User,
Colour = ColourInfo.GradientVertical(Color4.White.Opacity(0.5f), Color4Extensions.FromHex("#444").Opacity(0))
}, 300, 5000)
{
RelativeSizeAxes = Axes.Both
},
new FillFlowContainer
{

View File

@ -146,15 +146,12 @@ namespace osu.Game.Screens.Ranking
Children = new[]
{
middleLayerBackground = new Box { RelativeSizeAxes = Axes.Both },
new DelayedLoadUnloadWrapper(() => new UserCoverBackground
new UserCoverBackground
{
RelativeSizeAxes = Axes.Both,
User = Score.User,
Colour = ColourInfo.GradientVertical(Color4.White.Opacity(0.5f), Color4Extensions.FromHex("#444").Opacity(0))
}, 300, 5000)
{
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.
// See the LICENCE file in the repository root for full licence text.
using System;
using osu.Framework.Allocation;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics;
@ -23,6 +24,16 @@ namespace osu.Game.Users
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]
private class Cover : CompositeDrawable
{

View File

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