diff --git a/osu.Game.Rulesets.Osu/OsuKeyConversionInputManager.cs b/osu.Game.Rulesets.Osu/OsuKeyConversionInputManager.cs index e71f15cd65..d60aab90fb 100644 --- a/osu.Game.Rulesets.Osu/OsuKeyConversionInputManager.cs +++ b/osu.Game.Rulesets.Osu/OsuKeyConversionInputManager.cs @@ -2,10 +2,7 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System.Linq; -using osu.Framework.Allocation; -using osu.Framework.Configuration; using osu.Framework.Input; -using osu.Game.Configuration; using osu.Game.Screens.Play; using OpenTK.Input; using KeyboardState = osu.Framework.Input.KeyboardState; @@ -17,13 +14,6 @@ namespace osu.Game.Rulesets.Osu { private bool leftViaKeyboard; private bool rightViaKeyboard; - private Bindable mouseDisabled; - - [BackgroundDependencyLoader] - private void load(OsuConfigManager config) - { - mouseDisabled = config.GetBindable(OsuConfig.MouseDisableButtons); - } protected override void TransformState(InputState state) { @@ -40,12 +30,6 @@ namespace osu.Game.Rulesets.Osu if (mouse != null) { - if (mouseDisabled.Value) - { - mouse.SetPressed(MouseButton.Left, false); - mouse.SetPressed(MouseButton.Right, false); - } - if (leftViaKeyboard) mouse.SetPressed(MouseButton.Left, true); if (rightViaKeyboard) diff --git a/osu.Game/Screens/Play/PlayerInputManager.cs b/osu.Game/Screens/Play/PlayerInputManager.cs index 654cde1b75..f961286818 100644 --- a/osu.Game/Screens/Play/PlayerInputManager.cs +++ b/osu.Game/Screens/Play/PlayerInputManager.cs @@ -1,8 +1,12 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using OpenTK.Input; +using osu.Framework.Allocation; +using osu.Framework.Configuration; using osu.Framework.Input; using osu.Framework.Timing; +using osu.Game.Configuration; using osu.Game.Input.Handlers; namespace osu.Game.Screens.Play @@ -15,7 +19,10 @@ namespace osu.Game.Screens.Play private ReplayInputHandler replayInputHandler; public ReplayInputHandler ReplayInputHandler { - get { return replayInputHandler; } + get + { + return replayInputHandler; + } set { if (replayInputHandler != null) RemoveHandler(replayInputHandler); @@ -28,6 +35,14 @@ namespace osu.Game.Screens.Play } } + private Bindable mouseDisabled; + + [BackgroundDependencyLoader] + private void load(OsuConfigManager config) + { + mouseDisabled = config.GetBindable(OsuConfig.MouseDisableButtons); + } + protected override void LoadComplete() { base.LoadComplete(); @@ -96,5 +111,24 @@ namespace osu.Game.Screens.Play requireMoreUpdateLoops = clock.CurrentTime != parentClock.CurrentTime; base.Update(); } + + protected override void TransformState(InputState state) + { + base.TransformState(state); + + // we don't want to transform the state if a replay is present (for now, at least). + if (replayInputHandler != null) return; + + var mouse = state.Mouse as Framework.Input.MouseState; + + if (mouse != null) + { + if (mouseDisabled.Value) + { + mouse.SetPressed(MouseButton.Left, false); + mouse.SetPressed(MouseButton.Right, false); + } + } + } } }