tangled
alpha
login
or
join now
keii.dev
/
osu-framework
0
fork
atom
A game framework written with osu! in mind.
0
fork
atom
overview
issues
pulls
pipelines
Merge branch 'reset-input-handlers' into tablet
Dean Herbert
5 years ago
2fbc2ee8
fca3bf21
+31
-25
2 changed files
expand all
collapse all
unified
split
osu.Framework
Platform
GameHost.cs
osu.Framework.Tests
Visual
Input
TestSceneInputManager.cs
+5
osu.Framework.Tests/Visual/Input/TestSceneInputManager.cs
···
9
9
using osu.Framework.Graphics.Sprites;
10
10
using osu.Framework.Input;
11
11
using osu.Framework.Input.Events;
12
12
+
using osu.Framework.Platform;
12
13
using osu.Framework.Platform.Windows;
13
14
using osuTK;
14
15
using osuTK.Graphics;
···
172
173
[Resolved]
173
174
private FrameworkConfigManager config { get; set; }
174
175
176
176
+
[Resolved]
177
177
+
private GameHost host { get; set; }
178
178
+
175
179
[BackgroundDependencyLoader]
176
180
private void load()
177
181
{
···
181
185
setRawInputConfig(false);
182
186
AddToggleStep("Toggle ConfineMouseMode", setConfineMouseModeConfig);
183
187
setConfineMouseModeConfig(false);
188
188
+
AddStep("Reset handlers", () => host.ResetInputHandlers());
184
189
}
185
190
186
191
private void setCursorSensivityConfig(double x)
+26
-25
osu.Framework/Platform/GameHost.cs
···
584
584
IsActive.BindTo(Window.IsActive);
585
585
}
586
586
587
587
-
resetInputHandlers();
587
587
+
initialiseInputHandlers();
588
588
589
589
threadRunner.Start();
590
590
···
694
694
Logger.Storage = Storage.GetStorageForDirectory("logs");
695
695
}
696
696
697
697
-
private void resetInputHandlers()
697
697
+
private void initialiseInputHandlers()
698
698
{
699
699
-
if (AvailableInputHandlers != null)
700
700
-
{
701
701
-
foreach (var h in AvailableInputHandlers)
702
702
-
h.Dispose();
703
703
-
}
704
704
-
705
699
AvailableInputHandlers = CreateAvailableInputHandlers().ToImmutableArray();
706
700
701
701
+
// disable any ignored handlers before performing initialisation.
702
702
+
ignoredInputHandlers.TriggerChange();
703
703
+
707
704
foreach (var handler in AvailableInputHandlers)
708
705
{
706
706
+
(handler as IHasCursorSensitivity)?.Sensitivity.BindTo(cursorSensitivity);
707
707
+
708
708
+
if (!handler.Enabled.Value)
709
709
+
continue;
710
710
+
709
711
if (!handler.Initialize(this))
710
712
{
711
713
handler.Enabled.Value = false;
712
712
-
continue;
713
714
}
715
715
+
}
716
716
+
}
714
717
715
715
-
(handler as IHasCursorSensitivity)?.Sensitivity.BindTo(cursorSensitivity);
718
718
+
/// <summary>
719
719
+
/// Reset all input handlers' settings to a default state.
720
720
+
/// </summary>
721
721
+
public void ResetInputHandlers()
722
722
+
{
723
723
+
// disable any ignored handlers before performing initialisation.
724
724
+
ignoredInputHandlers.TriggerChange();
725
725
+
726
726
+
foreach (var handler in AvailableInputHandlers)
727
727
+
{
728
728
+
(handler as IHasCursorSensitivity)?.Sensitivity.SetDefault();
716
729
}
717
730
}
718
731
···
839
852
{
840
853
var configIgnores = e.NewValue.Split(' ').Where(s => !string.IsNullOrWhiteSpace(s));
841
854
842
842
-
// for now, we always want at least one handler disabled (don't want raw and non-raw mouse at once).
843
843
-
// Todo: We renamed OpenTK to osuTK, the second condition can be removed after some time has passed
844
844
-
bool restoreDefaults = !configIgnores.Any() || e.NewValue.Contains("OpenTK");
845
845
-
846
846
-
if (restoreDefaults)
847
847
-
{
848
848
-
resetInputHandlers();
849
849
-
ignoredInputHandlers.Value = string.Join(' ', AvailableInputHandlers.Where(h => !h.Enabled.Value).Select(h => h.ToString()));
850
850
-
}
851
851
-
else
855
855
+
foreach (var handler in AvailableInputHandlers)
852
856
{
853
853
-
foreach (var handler in AvailableInputHandlers)
854
854
-
{
855
855
-
var handlerType = handler.ToString();
856
856
-
handler.Enabled.Value = configIgnores.All(ch => ch != handlerType);
857
857
-
}
857
857
+
var handlerType = handler.ToString();
858
858
+
handler.Enabled.Value = configIgnores.All(ch => ch != handlerType);
858
859
}
859
860
};
860
861