mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 19:42:55 +08:00
Fix abysmal load performance when showing the social overlay
This commit is contained in:
parent
73e561bf10
commit
0f000fcc14
@ -21,31 +21,45 @@ namespace osu.Game.Users
|
|||||||
set => Model = value;
|
set => Model = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Resolved]
|
protected override Drawable CreateDrawable(User user) => new Cover(user);
|
||||||
private LargeTextureStore textures { get; set; }
|
|
||||||
|
|
||||||
protected override Drawable CreateDrawable(User user)
|
private class Cover : CompositeDrawable
|
||||||
{
|
{
|
||||||
if (user == null)
|
private readonly User user;
|
||||||
|
|
||||||
|
public Cover(User user)
|
||||||
{
|
{
|
||||||
return new Box
|
this.user = user;
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both;
|
||||||
Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.75f))
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(LargeTextureStore textures)
|
||||||
{
|
{
|
||||||
var sprite = new Sprite
|
if (user == null)
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
InternalChild = new Box
|
||||||
Texture = textures.Get(user.CoverUrl),
|
{
|
||||||
FillMode = FillMode.Fill,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Anchor = Anchor.Centre,
|
Colour = ColourInfo.GradientVertical(Color4.Black.Opacity(0.1f), Color4.Black.Opacity(0.75f))
|
||||||
Origin = Anchor.Centre
|
};
|
||||||
};
|
}
|
||||||
sprite.OnLoadComplete += d => d.FadeInFromZero(400);
|
else
|
||||||
return sprite;
|
InternalChild = new Sprite
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Texture = textures.Get(user.CoverUrl),
|
||||||
|
FillMode = FillMode.Fill,
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void LoadComplete()
|
||||||
|
{
|
||||||
|
base.LoadComplete();
|
||||||
|
this.FadeInFromZero(400);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,8 +61,6 @@ namespace osu.Game.Users
|
|||||||
|
|
||||||
FillFlowContainer infoContainer;
|
FillFlowContainer infoContainer;
|
||||||
|
|
||||||
UserCoverBackground coverBackground;
|
|
||||||
|
|
||||||
AddInternal(content = new Container
|
AddInternal(content = new Container
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
@ -77,13 +75,16 @@ namespace osu.Game.Users
|
|||||||
|
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
new DelayedLoadWrapper(coverBackground = new UserCoverBackground
|
new DelayedLoadUnloadWrapper(() => 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) { RelativeSizeAxes = Axes.Both },
|
}, 300, 5000)
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
},
|
||||||
new Box
|
new Box
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
@ -184,8 +185,6 @@ namespace osu.Game.Users
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
coverBackground.OnLoadComplete += d => d.FadeInFromZero(400, Easing.Out);
|
|
||||||
|
|
||||||
if (user.IsSupporter)
|
if (user.IsSupporter)
|
||||||
{
|
{
|
||||||
infoContainer.Add(new SupporterIcon
|
infoContainer.Add(new SupporterIcon
|
||||||
|
Loading…
Reference in New Issue
Block a user