/ src / Ryujinx.Input / HLE / InputManager.cs
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  }