diff --git a/osu.Game/Users/UpdateableAvatar.cs b/osu.Game/Users/UpdateableAvatar.cs
index 7259468674..8eb08f963d 100644
--- a/osu.Game/Users/UpdateableAvatar.cs
+++ b/osu.Game/Users/UpdateableAvatar.cs
@@ -10,12 +10,8 @@ namespace osu.Game.Users
///
/// An avatar which can update to a new user when needed.
///
- public class UpdateableAvatar : Container
+ public class UpdateableAvatar : ModelBackedDrawable
{
- private Drawable displayedAvatar;
-
- private User user;
-
///
/// Whether to show a default guest representation on null user (as opposed to nothing).
///
@@ -23,17 +19,8 @@ namespace osu.Game.Users
public User User
{
- get => user;
- set
- {
- if (user?.Id == value?.Id)
- return;
-
- user = value;
-
- if (IsLoaded)
- updateAvatar();
- }
+ get => Model;
+ set => Model = value;
}
///
@@ -41,17 +28,8 @@ namespace osu.Game.Users
///
public readonly BindableBool OpenOnClick = new BindableBool(true);
- protected override void LoadComplete()
+ protected override Drawable CreateDrawable(User user)
{
- base.LoadComplete();
- updateAvatar();
- }
-
- private void updateAvatar()
- {
- displayedAvatar?.FadeOut(300);
- displayedAvatar?.Expire();
-
if (user != null || ShowGuestOnNull)
{
var avatar = new Avatar(user)
@@ -62,8 +40,10 @@ namespace osu.Game.Users
avatar.OnLoadComplete += d => d.FadeInFromZero(300, Easing.OutQuint);
avatar.OpenOnClick.BindTo(OpenOnClick);
- Add(displayedAvatar = new DelayedLoadWrapper(avatar));
+ return avatar;
}
+
+ return null;
}
}
}