diff options
Diffstat (limited to 'Ryujinx.Ava/Input/AvaloniaMouseDriver.cs')
-rw-r--r-- | Ryujinx.Ava/Input/AvaloniaMouseDriver.cs | 75 |
1 files changed, 36 insertions, 39 deletions
diff --git a/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs b/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs index 9ad0310a..eb58752c 100644 --- a/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs +++ b/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs @@ -11,35 +11,50 @@ namespace Ryujinx.Ava.Input { internal class AvaloniaMouseDriver : IGamepadDriver { - private Control _widget; - private bool _isDisposed; - private Size _size; + private Control _widget; + private bool _isDisposed; + private Size _size; private readonly Window _window; - public bool[] PressedButtons { get; } - + public bool[] PressedButtons { get; } public Vector2 CurrentPosition { get; private set; } - public Vector2 Scroll { get; private set; } + public Vector2 Scroll { get; private set; } + + public string DriverName => "AvaloniaMouseDriver"; + public ReadOnlySpan<string> GamepadsIds => new[] { "0" }; public AvaloniaMouseDriver(Window window, Control parent) { _widget = parent; _window = window; - _widget.PointerMoved += Parent_PointerMovedEvent; - _widget.PointerPressed += Parent_PointerPressEvent; - _widget.PointerReleased += Parent_PointerReleaseEvent; + _widget.PointerMoved += Parent_PointerMovedEvent; + _widget.PointerPressed += Parent_PointerPressEvent; + _widget.PointerReleased += Parent_PointerReleaseEvent; _widget.PointerWheelChanged += Parent_ScrollEvent; - _window.PointerMoved += Parent_PointerMovedEvent; - _window.PointerPressed += Parent_PointerPressEvent; - _window.PointerReleased += Parent_PointerReleaseEvent; + _window.PointerMoved += Parent_PointerMovedEvent; + _window.PointerPressed += Parent_PointerPressEvent; + _window.PointerReleased += Parent_PointerReleaseEvent; _window.PointerWheelChanged += Parent_ScrollEvent; PressedButtons = new bool[(int)MouseButton.Count]; _size = new Size((int)parent.Bounds.Width, (int)parent.Bounds.Height); - parent.GetObservable(Control.BoundsProperty).Subscribe(Resized); + + parent.GetObservable(Visual.BoundsProperty).Subscribe(Resized); + } + + public event Action<string> OnGamepadConnected + { + add { } + remove { } + } + + public event Action<string> OnGamepadDisconnected + { + add { } + remove { } } private void Resized(Rect rect) @@ -59,14 +74,12 @@ namespace Ryujinx.Ava.Input private void Parent_PointerPressEvent(object o, PointerPressedEventArgs args) { - var pointerProperties = args.GetCurrentPoint(_widget).Properties; - - PressedButtons[(int)pointerProperties.PointerUpdateKind] = true; + PressedButtons[(int)args.GetCurrentPoint(_widget).Properties.PointerUpdateKind] = true; } private void Parent_PointerMovedEvent(object o, PointerEventArgs args) { - var position = args.GetPosition(_widget); + Point position = args.GetPosition(_widget); CurrentPosition = new Vector2((float)position.X, (float)position.Y); } @@ -96,22 +109,6 @@ namespace Ryujinx.Ava.Input return _size; } - public string DriverName => "Avalonia"; - - public event Action<string> OnGamepadConnected - { - add { } - remove { } - } - - public event Action<string> OnGamepadDisconnected - { - add { } - remove { } - } - - public ReadOnlySpan<string> GamepadsIds => new[] { "0" }; - public IGamepad GetGamepad(string id) { return new AvaloniaMouse(this); @@ -126,14 +123,14 @@ namespace Ryujinx.Ava.Input _isDisposed = true; - _widget.PointerMoved -= Parent_PointerMovedEvent; - _widget.PointerPressed -= Parent_PointerPressEvent; - _widget.PointerReleased -= Parent_PointerReleaseEvent; + _widget.PointerMoved -= Parent_PointerMovedEvent; + _widget.PointerPressed -= Parent_PointerPressEvent; + _widget.PointerReleased -= Parent_PointerReleaseEvent; _widget.PointerWheelChanged -= Parent_ScrollEvent; - _window.PointerMoved -= Parent_PointerMovedEvent; - _window.PointerPressed -= Parent_PointerPressEvent; - _window.PointerReleased -= Parent_PointerReleaseEvent; + _window.PointerMoved -= Parent_PointerMovedEvent; + _window.PointerPressed -= Parent_PointerPressEvent; + _window.PointerReleased -= Parent_PointerReleaseEvent; _window.PointerWheelChanged -= Parent_ScrollEvent; _widget = null; |