Fix beatmap + ruleset being changeable

This commit is contained in:
smoogipoo 2018-12-14 17:35:18 +09:00
parent 5f0069eb83
commit de0fc2a0de
2 changed files with 33 additions and 2 deletions

View File

@ -32,6 +32,9 @@ public class MatchScreen : MultiplayerScreen
protected override Drawable TransitionContent => participants;
public override bool AllowBeatmapRulesetChange => allowBeatmapRulesetChange;
private bool allowBeatmapRulesetChange;
public override string Title => room.Name.Value;
public override string ShortTitle => "room";
@ -140,10 +143,19 @@ private void setFromPlaylist()
info.Beatmap.Value = item.Beatmap;
info.Mods.Value = item.RequiredMods;
allowBeatmapRulesetChange = true;
// Todo: item.Beatmap can be null here...
var localBeatmap = beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == item.BeatmapID) ?? item.Beatmap;
Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap);
Beatmap.Value.Mods.Value = item.RequiredMods.ToArray();
Schedule(() =>
{
Beatmap.Value = beatmapManager.GetWorkingBeatmap(localBeatmap);
Beatmap.Value.Mods.Value = item.RequiredMods.ToArray();
Ruleset.Value = item.Ruleset;
allowBeatmapRulesetChange = false;
});
}
private void onStart()

View File

@ -19,6 +19,10 @@ public class Multiplayer : OsuScreen
{
private readonly MultiplayerWaveContainer waves;
public override bool AllowBeatmapRulesetChange => currentScreen?.AllowBeatmapRulesetChange ?? base.AllowBeatmapRulesetChange;
private OsuScreen currentScreen;
public Multiplayer()
{
Child = waves = new MultiplayerWaveContainer
@ -58,6 +62,8 @@ public Multiplayer()
new Header(loungeScreen)
});
screenAdded(loungeScreen);
loungeScreen.Exited += s => Exit();
}
@ -96,6 +102,19 @@ protected override void LogoExiting(OsuLogo logo)
base.LogoExiting(logo);
}
private void screenAdded(Screen newScreen)
{
currentScreen = (OsuScreen)newScreen;
newScreen.ModePushed += screenAdded;
newScreen.Exited += screenRemoved;
}
private void screenRemoved(Screen newScreen)
{
currentScreen = (OsuScreen)newScreen;
}
private class MultiplayerWaveContainer : WaveContainer
{
protected override bool StartHidden => true;