mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-08-11 12:47:51 +02:00
51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System;
|
|
|
|
namespace Ryujinx.Input.HLE
|
|
{
|
|
public class InputManager(IGamepadDriver keyboardDriver, IGamepadDriver gamepadDriver)
|
|
: IDisposable
|
|
{
|
|
public IGamepadDriver KeyboardDriver { get; } = keyboardDriver;
|
|
public IGamepadDriver GamepadDriver { get; } = gamepadDriver;
|
|
public IGamepadDriver MouseDriver { get; private set; }
|
|
|
|
public void SetMouseDriver(IGamepadDriver mouseDriver)
|
|
{
|
|
MouseDriver?.Dispose();
|
|
|
|
MouseDriver = mouseDriver;
|
|
}
|
|
|
|
public NpadManager CreateNpadManager()
|
|
{
|
|
return new NpadManager(KeyboardDriver, GamepadDriver, MouseDriver);
|
|
}
|
|
|
|
public TouchScreenManager CreateTouchScreenManager()
|
|
{
|
|
if (MouseDriver == null)
|
|
{
|
|
throw new InvalidOperationException("Mouse Driver has not been initialized.");
|
|
}
|
|
|
|
return new TouchScreenManager(MouseDriver.GetGamepad("0") as IMouse);
|
|
}
|
|
|
|
protected virtual void Dispose(bool disposing)
|
|
{
|
|
if (disposing)
|
|
{
|
|
KeyboardDriver?.Dispose();
|
|
GamepadDriver?.Dispose();
|
|
MouseDriver?.Dispose();
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
GC.SuppressFinalize(this);
|
|
Dispose(true);
|
|
}
|
|
}
|
|
}
|