From 74facb32b4b7c0315fe574fbed276a26eab73d3d Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Fri, 4 Aug 2017 15:34:11 +0800 Subject: [PATCH] Use removeAutoModOnResume as a field. --- osu.Game/Screens/Select/PlaySongSelect.cs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index 7a4f7c404d..3eb44bd2f3 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -1,7 +1,6 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System.Collections.Generic; using System.Linq; using OpenTK.Input; using osu.Framework.Allocation; @@ -12,7 +11,6 @@ using osu.Framework.Screens; using osu.Game.Beatmaps; using osu.Game.Graphics; using osu.Game.Overlays.Mods; -using osu.Game.Rulesets.Mods; using osu.Game.Screens.Edit; using osu.Game.Screens.Play; using osu.Game.Screens.Ranking; @@ -24,7 +22,7 @@ namespace osu.Game.Screens.Select private OsuScreen player; private readonly ModSelectOverlay modSelect; private readonly BeatmapDetailArea beatmapDetails; - private IEnumerable originalMods; + private bool removeAutoModOnResume; public PlaySongSelect() { @@ -76,8 +74,12 @@ namespace osu.Game.Screens.Select { player = null; - modSelect.SelectedMods.Value = originalMods; - originalMods = null; + if (removeAutoModOnResume) + { + var autoType = Ruleset.Value.CreateInstance().GetAutoplayMod().GetType(); + modSelect.SelectedMods.Value = modSelect.SelectedMods.Value.Where(m => m.GetType() != autoType).ToArray(); + } + removeAutoModOnResume = false; Beatmap.Value.Track.Looping = true; @@ -112,14 +114,17 @@ namespace osu.Game.Screens.Select { if (player != null) return; - originalMods = modSelect.SelectedMods.Value; if (state?.Keyboard.ControlPressed == true) { var auto = Ruleset.Value.CreateInstance().GetAutoplayMod(); var autoType = auto.GetType(); - if (originalMods.All(m => m.GetType() != autoType)) - modSelect.SelectedMods.Value = originalMods.Concat(new[] { auto }); + var mods = modSelect.SelectedMods.Value; + if (mods.All(m => m.GetType() != autoType)) + { + modSelect.SelectedMods.Value = mods.Concat(new[] { auto }); + removeAutoModOnResume = true; + } } Beatmap.Value.Track.Looping = false;