From 9bbcc0526de83b6c6845bd8c984e330b7d51d2b3 Mon Sep 17 00:00:00 2001
From: Dean Herbert <pe@ppy.sh>
Date: Tue, 11 Jul 2017 18:39:10 +0900
Subject: [PATCH] Disable beatmap changes in specified screens

---
 osu.Game/Screens/OsuScreen.cs         | 9 +++++++--
 osu.Game/Screens/Play/Player.cs       | 2 +-
 osu.Game/Screens/Play/PlayerLoader.cs | 2 +-
 osu.Game/Screens/Ranking/Results.cs   | 2 +-
 4 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/osu.Game/Screens/OsuScreen.cs b/osu.Game/Screens/OsuScreen.cs
index 4f8109b4e4..f0e673a739 100644
--- a/osu.Game/Screens/OsuScreen.cs
+++ b/osu.Game/Screens/OsuScreen.cs
@@ -29,7 +29,11 @@ namespace osu.Game.Screens
 
         internal virtual bool HasLocalCursorDisplayed => false;
 
-        internal virtual bool AllowRulesetChange => true;
+        /// <summary>
+        /// Whether the beatmap or ruleset should be allowed to be changed by the user or game.
+        /// Used to mark exclusive areas where this is strongly prohibited, like gameplay.
+        /// </summary>
+        internal virtual bool AllowBeatmapRulesetChange => true;
 
         private readonly Bindable<WorkingBeatmap> beatmap = new Bindable<WorkingBeatmap>();
 
@@ -85,7 +89,8 @@ namespace osu.Game.Screens
         {
             if (!IsCurrentScreen) return;
 
-            ruleset.Disabled = !AllowRulesetChange;
+            ruleset.Disabled = !AllowBeatmapRulesetChange;
+            beatmap.Disabled = !AllowBeatmapRulesetChange;
         }
 
         protected override void OnResuming(Screen last)
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index d0ffe1de1c..a7ea77c710 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -39,7 +39,7 @@ namespace osu.Game.Screens.Play
 
         public Action RestartRequested;
 
-        internal override bool AllowRulesetChange => false;
+        internal override bool AllowBeatmapRulesetChange => false;
 
         public bool HasFailed { get; private set; }
 
diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs
index c8ebb1f436..f2ed378e7c 100644
--- a/osu.Game/Screens/Play/PlayerLoader.cs
+++ b/osu.Game/Screens/Play/PlayerLoader.cs
@@ -27,7 +27,7 @@ namespace osu.Game.Screens.Play
         private bool showOverlays = true;
         internal override bool ShowOverlays => showOverlays;
 
-        internal override bool AllowRulesetChange => false;
+        internal override bool AllowBeatmapRulesetChange => false;
 
         protected override BackgroundScreen CreateBackground() => new BackgroundScreenBeatmap(Beatmap);
 
diff --git a/osu.Game/Screens/Ranking/Results.cs b/osu.Game/Screens/Ranking/Results.cs
index dac83536ed..636851e14d 100644
--- a/osu.Game/Screens/Ranking/Results.cs
+++ b/osu.Game/Screens/Ranking/Results.cs
@@ -31,7 +31,7 @@ namespace osu.Game.Screens.Ranking
 
         private ResultModeTabControl modeChangeButtons;
 
-        internal override bool AllowRulesetChange => false;
+        internal override bool AllowBeatmapRulesetChange => false;
 
         private Container currentPage;