diff --git a/osu.Game/Beatmaps/Drawables/UpdateableBeatmapBackgroundSprite.cs b/osu.Game/Beatmaps/Drawables/UpdateableBeatmapBackgroundSprite.cs
index 8943ad350e..636c568bd0 100644
--- a/osu.Game/Beatmaps/Drawables/UpdateableBeatmapBackgroundSprite.cs
+++ b/osu.Game/Beatmaps/Drawables/UpdateableBeatmapBackgroundSprite.cs
@@ -12,9 +12,9 @@ namespace osu.Game.Beatmaps.Drawables
///
/// Display a beatmap background from a local source, but fallback to online source if not available.
///
- public class UpdateableBeatmapBackgroundSprite : ModelBackedDrawable
+ public class UpdateableBeatmapBackgroundSprite : ModelBackedDrawable
{
- public readonly Bindable Beatmap = new Bindable();
+ public readonly Bindable Beatmap = new Bindable();
protected override double LoadDelay => 500;
@@ -39,7 +39,7 @@ namespace osu.Game.Beatmaps.Drawables
protected override double TransformDuration => 400;
- protected override Drawable CreateDrawable(BeatmapInfo model)
+ protected override Drawable CreateDrawable(IBeatmapInfo model)
{
var drawable = getDrawableForModel(model);
drawable.RelativeSizeAxes = Axes.Both;
@@ -50,15 +50,16 @@ namespace osu.Game.Beatmaps.Drawables
return drawable;
}
- private Drawable getDrawableForModel(BeatmapInfo model)
+ private Drawable getDrawableForModel(IBeatmapInfo model)
{
// prefer online cover where available.
- if (model?.BeatmapSet?.OnlineInfo != null)
- return new OnlineBeatmapSetCover(model.BeatmapSet, beatmapSetCoverType);
+ if (model?.BeatmapSet is IBeatmapSetOnlineInfo online)
+ return new OnlineBeatmapSetCover(online, beatmapSetCoverType);
- return model?.ID > 0
- ? new BeatmapBackgroundSprite(beatmaps.GetWorkingBeatmap(model))
- : new BeatmapBackgroundSprite(beatmaps.DefaultBeatmap);
+ if (model is BeatmapInfo localModel)
+ return new BeatmapBackgroundSprite(beatmaps.GetWorkingBeatmap(localModel));
+
+ return new BeatmapBackgroundSprite(beatmaps.DefaultBeatmap);
}
}
}
diff --git a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
index 585b024623..264d49849c 100644
--- a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
+++ b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
@@ -333,13 +333,14 @@ namespace osu.Game.Screens.OnlinePlay
public PanelBackground()
{
+ UpdateableBeatmapBackgroundSprite backgroundSprite;
+
InternalChildren = new Drawable[]
{
- new UpdateableBeatmapBackgroundSprite
+ backgroundSprite = new UpdateableBeatmapBackgroundSprite
{
RelativeSizeAxes = Axes.Both,
FillMode = FillMode.Fill,
- Beatmap = { BindTarget = Beatmap }
},
new FillFlowContainer
{
@@ -374,6 +375,10 @@ namespace osu.Game.Screens.OnlinePlay
}
}
};
+
+ // manual binding required as playlists don't expose IBeatmapInfo currently.
+ // may be removed in the future if this changes.
+ Beatmap.BindValueChanged(beatmap => backgroundSprite.Beatmap.Value = beatmap.NewValue);
}
}
}