1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 13:22:55 +08:00

Fix working beatmap not being updated

This commit is contained in:
smoogipoo 2018-12-27 18:10:49 +09:00
parent d6c53e3851
commit 9a5630b3d5

View File

@ -119,6 +119,12 @@ namespace osu.Game.Screens.Multi.Match
chat.Exit += Exit; chat.Exit += Exit;
} }
[BackgroundDependencyLoader]
private void load()
{
beatmapManager.ItemAdded += beatmapAdded;
}
protected override bool OnExiting(Screen next) protected override bool OnExiting(Screen next)
{ {
manager?.PartRoom(); manager?.PartRoom();
@ -155,6 +161,21 @@ namespace osu.Game.Screens.Multi.Match
game?.ForcefullySetRuleset(ruleset); game?.ForcefullySetRuleset(ruleset);
} }
private void beatmapAdded(BeatmapSetInfo model, bool existing, bool silent) => Schedule(() =>
{
if (Beatmap.Value != beatmapManager.DefaultBeatmap)
return;
if (bindings.CurrentBeatmap.Value == null)
return;
// Try to retrieve the corresponding local beatmap
var localBeatmap = beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == bindings.CurrentBeatmap.Value.OnlineBeatmapID);
if (localBeatmap != null)
game?.ForcefullySetBeatmap(beatmapManager.GetWorkingBeatmap(localBeatmap));
});
private void addPlaylistItem(PlaylistItem item) private void addPlaylistItem(PlaylistItem item)
{ {
bindings.Playlist.Clear(); bindings.Playlist.Clear();
@ -176,5 +197,13 @@ namespace osu.Game.Screens.Multi.Match
break; break;
} }
} }
protected override void Dispose(bool isDisposing)
{
base.Dispose(isDisposing);
if (beatmapManager != null)
beatmapManager.ItemAdded -= beatmapAdded;
}
} }
} }