diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index cea041b04d..6a80840e93 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -298,20 +298,21 @@ namespace osu.Game private Container overlayContent; + private OsuScreen currentScreen; private FrameworkConfigManager frameworkConfig; private void screenChanged(Screen newScreen) { - CurrentScreen.Value = newScreen as OsuScreen; + currentScreen = newScreen as OsuScreen; - if (CurrentScreen.Value == null) + if (currentScreen == null) { Exit(); return; } //central game screen change logic. - if (!CurrentScreen.Value.ShowOverlays) + if (!currentScreen.ShowOverlays) { settings.State = Visibility.Hidden; Toolbar.State = Visibility.Hidden; @@ -326,6 +327,8 @@ namespace osu.Game } ScreenChanged?.Invoke(newScreen); + + musicController.AllowBeatmapChange = currentScreen.AllowBeatmapChange; } protected override bool OnExiting() @@ -361,7 +364,7 @@ namespace osu.Game mainContent.Padding = new MarginPadding { Top = Toolbar.Position.Y + Toolbar.DrawHeight }; - Cursor.State = CurrentScreen.Value?.HasLocalCursorDisplayed == false ? Visibility.Visible : Visibility.Hidden; + Cursor.State = currentScreen?.HasLocalCursorDisplayed == false ? Visibility.Visible : Visibility.Hidden; } private void screenAdded(Screen newScreen) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 56224675c1..5350cd03ea 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -46,8 +46,6 @@ namespace osu.Game public readonly Bindable Beatmap = new Bindable(); - public readonly Bindable CurrentScreen = new Bindable(); - private Bindable fpsDisplayVisible; protected AssemblyName AssemblyName => Assembly.GetEntryAssembly()?.GetName() ?? new AssemblyName { Version = new Version() }; diff --git a/osu.Game/Overlays/Music/PlaylistOverlay.cs b/osu.Game/Overlays/Music/PlaylistOverlay.cs index aa4cfdc00f..53844a02d2 100644 --- a/osu.Game/Overlays/Music/PlaylistOverlay.cs +++ b/osu.Game/Overlays/Music/PlaylistOverlay.cs @@ -36,13 +36,11 @@ namespace osu.Game.Overlays.Music private readonly Bindable beatmapBacking = new Bindable(); - private readonly Bindable currentScreenBacking = new Bindable(); + public bool AllowBeatmapChange = true; public IEnumerable BeatmapSets; private InputManager inputManager; - private bool canBeatmapChange => currentScreenBacking.Value?.CanBeatmapChange != false; - [BackgroundDependencyLoader] private void load(OsuGameBase game, BeatmapDatabase beatmaps, OsuColour colours, UserInputManager inputManager) { @@ -91,7 +89,6 @@ namespace osu.Game.Overlays.Music list.BeatmapSets = BeatmapSets = beatmaps.GetAllWithChildren().ToList(); beatmapBacking.BindTo(game.Beatmap); - currentScreenBacking.BindTo(game.CurrentScreen); filter.Search.OnCommit = (sender, newText) => { var beatmap = list.FirstVisibleSet?.Beatmaps?.FirstOrDefault(); @@ -158,7 +155,7 @@ namespace osu.Game.Overlays.Music private void playSpecified(BeatmapInfo info) { - if (!canBeatmapChange) + if (!AllowBeatmapChange) { beatmapBacking.Value?.Track?.Seek(0); return; diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index cee0ab88c6..457174a67f 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -53,6 +53,21 @@ namespace osu.Game.Overlays private Container dragContainer; private Container playerContainer; + private bool allowBeatmapChange = true; + + public bool AllowBeatmapChange + { + get + { + return allowBeatmapChange; + } + set + { + allowBeatmapChange = value; + playlist.AllowBeatmapChange = value; + } + } + public MusicController() { Width = 400; diff --git a/osu.Game/Screens/OsuScreen.cs b/osu.Game/Screens/OsuScreen.cs index 6fbabd675e..3eb26a01a9 100644 --- a/osu.Game/Screens/OsuScreen.cs +++ b/osu.Game/Screens/OsuScreen.cs @@ -29,7 +29,7 @@ namespace osu.Game.Screens internal virtual bool AllowRulesetChange => true; - internal virtual bool CanBeatmapChange => true; + internal virtual bool AllowBeatmapChange => true; private readonly Bindable beatmap = new Bindable(); diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index 47649372bf..f92d16faf8 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -32,7 +32,7 @@ namespace osu.Game.Screens.Play internal override bool ShowOverlays => false; - internal override bool CanBeatmapChange => false; + internal override bool AllowBeatmapChange => false; internal override bool HasLocalCursorDisplayed => !pauseContainer.IsPaused && !HasFailed && HitRenderer.ProvidingUserCursor; diff --git a/osu.Game/Screens/Ranking/Results.cs b/osu.Game/Screens/Ranking/Results.cs index 8cd45e4b5d..866bccc5fe 100644 --- a/osu.Game/Screens/Ranking/Results.cs +++ b/osu.Game/Screens/Ranking/Results.cs @@ -280,6 +280,6 @@ namespace osu.Game.Screens.Ranking modeChangeButtons.Current.TriggerChange(); } - internal override bool CanBeatmapChange => false; + internal override bool AllowBeatmapChange => false; } }