mirror of https://github.com/ppy/osu
Fix beatmap + ruleset being changeable
This commit is contained in:
parent
5f0069eb83
commit
de0fc2a0de
|
@ -32,6 +32,9 @@ public class MatchScreen : MultiplayerScreen
|
||||||
|
|
||||||
protected override Drawable TransitionContent => participants;
|
protected override Drawable TransitionContent => participants;
|
||||||
|
|
||||||
|
public override bool AllowBeatmapRulesetChange => allowBeatmapRulesetChange;
|
||||||
|
private bool allowBeatmapRulesetChange;
|
||||||
|
|
||||||
public override string Title => room.Name.Value;
|
public override string Title => room.Name.Value;
|
||||||
|
|
||||||
public override string ShortTitle => "room";
|
public override string ShortTitle => "room";
|
||||||
|
@ -140,10 +143,19 @@ private void setFromPlaylist()
|
||||||
info.Beatmap.Value = item.Beatmap;
|
info.Beatmap.Value = item.Beatmap;
|
||||||
info.Mods.Value = item.RequiredMods;
|
info.Mods.Value = item.RequiredMods;
|
||||||
|
|
||||||
|
allowBeatmapRulesetChange = true;
|
||||||
|
|
||||||
// Todo: item.Beatmap can be null here...
|
// Todo: item.Beatmap can be null here...
|
||||||
var localBeatmap = beatmapManager.QueryBeatmap(b => b.OnlineBeatmapID == item.BeatmapID) ?? item.Beatmap;
|
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()
|
private void onStart()
|
||||||
|
|
|
@ -19,6 +19,10 @@ public class Multiplayer : OsuScreen
|
||||||
{
|
{
|
||||||
private readonly MultiplayerWaveContainer waves;
|
private readonly MultiplayerWaveContainer waves;
|
||||||
|
|
||||||
|
public override bool AllowBeatmapRulesetChange => currentScreen?.AllowBeatmapRulesetChange ?? base.AllowBeatmapRulesetChange;
|
||||||
|
|
||||||
|
private OsuScreen currentScreen;
|
||||||
|
|
||||||
public Multiplayer()
|
public Multiplayer()
|
||||||
{
|
{
|
||||||
Child = waves = new MultiplayerWaveContainer
|
Child = waves = new MultiplayerWaveContainer
|
||||||
|
@ -58,6 +62,8 @@ public Multiplayer()
|
||||||
new Header(loungeScreen)
|
new Header(loungeScreen)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
screenAdded(loungeScreen);
|
||||||
|
|
||||||
loungeScreen.Exited += s => Exit();
|
loungeScreen.Exited += s => Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,6 +102,19 @@ protected override void LogoExiting(OsuLogo logo)
|
||||||
base.LogoExiting(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
|
private class MultiplayerWaveContainer : WaveContainer
|
||||||
{
|
{
|
||||||
protected override bool StartHidden => true;
|
protected override bool StartHidden => true;
|
||||||
|
|
Loading…
Reference in New Issue