InputManager.cs 1.4 KB

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