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 @@ public class UpdateableAvatar : Container 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 @@ public User User /// 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 @@ private void updateAvatar() avatar.OnLoadComplete += d => d.FadeInFromZero(300, Easing.OutQuint); avatar.OpenOnClick.BindTo(OpenOnClick); - Add(displayedAvatar = new DelayedLoadWrapper(avatar)); + return avatar; } + + return null; } } }