InputManager.cs
1 using System; 2 3 namespace Ryujinx.Input.HLE 4 { 5 public class InputManager : IDisposable 6 { 7 public IGamepadDriver KeyboardDriver { get; private set; } 8 public IGamepadDriver GamepadDriver { get; private set; } 9 public IGamepadDriver MouseDriver { get; private set; } 10 11 public InputManager(IGamepadDriver keyboardDriver, IGamepadDriver gamepadDriver) 12 { 13 KeyboardDriver = keyboardDriver; 14 GamepadDriver = gamepadDriver; 15 } 16 17 public void SetMouseDriver(IGamepadDriver mouseDriver) 18 { 19 MouseDriver?.Dispose(); 20 21 MouseDriver = mouseDriver; 22 } 23 24 public NpadManager CreateNpadManager() 25 { 26 return new NpadManager(KeyboardDriver, GamepadDriver, MouseDriver); 27 } 28 29 public TouchScreenManager CreateTouchScreenManager() 30 { 31 if (MouseDriver == null) 32 { 33 throw new InvalidOperationException("Mouse Driver has not been initialized."); 34 } 35 36 return new TouchScreenManager(MouseDriver.GetGamepad("0") as IMouse); 37 } 38 39 protected virtual void Dispose(bool disposing) 40 { 41 if (disposing) 42 { 43 KeyboardDriver?.Dispose(); 44 GamepadDriver?.Dispose(); 45 MouseDriver?.Dispose(); 46 } 47 } 48 49 public void Dispose() 50 { 51 GC.SuppressFinalize(this); 52 Dispose(true); 53 } 54 } 55 }