edited NpadManager to better support auto-assign; updated initialization methods; changed some settings for LED color

This commit is contained in:
uncavo-hdmi 2025-02-09 18:10:32 +01:00
parent 5b88a2dd89
commit 62dfbb5dcb
6 changed files with 20 additions and 8 deletions

View File

@ -43,6 +43,8 @@ namespace Ryujinx.Input.HLE
private bool _enableMouse; private bool _enableMouse;
private Switch _device; private Switch _device;
public bool AutoAssignEnabled { get; set; } = false;
public NpadManager(IGamepadDriver keyboardDriver, IGamepadDriver gamepadDriver, IGamepadDriver mouseDriver) public NpadManager(IGamepadDriver keyboardDriver, IGamepadDriver gamepadDriver, IGamepadDriver mouseDriver)
{ {
_controllers = new NpadController[MaxControllers]; _controllers = new NpadController[MaxControllers];
@ -53,7 +55,7 @@ namespace Ryujinx.Input.HLE
_mouseDriver = mouseDriver; _mouseDriver = mouseDriver;
_inputConfig = new List<InputConfig>(); _inputConfig = new List<InputConfig>();
//_gamepadDriver.OnGamepadConnected += HandleOnGamepadConnected; _gamepadDriver.OnGamepadConnected += HandleOnGamepadConnected;
_gamepadDriver.OnGamepadDisconnected += HandleOnGamepadDisconnected; _gamepadDriver.OnGamepadDisconnected += HandleOnGamepadDisconnected;
} }
@ -89,12 +91,14 @@ namespace Ryujinx.Input.HLE
} }
} }
//ReloadConfiguration(_inputConfig, _enableKeyboard, _enableMouse); if (AutoAssignEnabled) return;
ReloadConfiguration(_inputConfig, _enableKeyboard, _enableMouse);
} }
} }
private void HandleOnGamepadConnected(string id) private void HandleOnGamepadConnected(string id)
{ {
if (AutoAssignEnabled) return;
// Force input reload // Force input reload
ReloadConfiguration(_inputConfig, _enableKeyboard, _enableMouse); ReloadConfiguration(_inputConfig, _enableKeyboard, _enableMouse);
} }
@ -198,11 +202,13 @@ namespace Ryujinx.Input.HLE
} }
} }
public void Initialize(Switch device, List<InputConfig> inputConfig, bool enableKeyboard, bool enableMouse) public void Initialize(Switch device, List<InputConfig> inputConfig, bool enableKeyboard, bool enableMouse, bool enableAutoAssign)
{ {
_device = device; _device = device;
_device.Configuration.RefreshInputConfig = RefreshInputConfigForHLE; _device.Configuration.RefreshInputConfig = RefreshInputConfigForHLE;
AutoAssignEnabled = enableAutoAssign;
ReloadConfiguration(inputConfig, enableKeyboard, enableMouse); ReloadConfiguration(inputConfig, enableKeyboard, enableMouse);
} }

View File

@ -483,7 +483,7 @@ namespace Ryujinx.Ava
DisplaySleep.Prevent(); DisplaySleep.Prevent();
NpadManager.Initialize(Device, ConfigurationState.Instance.Hid.InputConfig, ConfigurationState.Instance.Hid.EnableKeyboard, ConfigurationState.Instance.Hid.EnableMouse); NpadManager.Initialize(Device, ConfigurationState.Instance.Hid.InputConfig, ConfigurationState.Instance.Hid.EnableKeyboard, ConfigurationState.Instance.Hid.EnableMouse, ConfigurationState.Instance.Hid.EnableAutoAssign);
TouchScreenManager.Initialize(Device); TouchScreenManager.Initialize(Device);
_viewModel.IsGameRunning = true; _viewModel.IsGameRunning = true;

View File

@ -370,7 +370,7 @@ namespace Ryujinx.Headless
DisplaySleep.Prevent(); DisplaySleep.Prevent();
_window.Initialize(_emulationContext, _inputConfiguration, _enableKeyboard, _enableMouse); _window.Initialize(_emulationContext, _inputConfiguration, _enableKeyboard, _enableMouse, _enableAutoAssign);
_window.Execute(); _window.Execute();

View File

@ -120,7 +120,7 @@ namespace Ryujinx.Headless
SDL2Driver.Instance.Initialize(); SDL2Driver.Instance.Initialize();
} }
public void Initialize(Switch device, List<InputConfig> inputConfigs, bool enableKeyboard, bool enableMouse) public void Initialize(Switch device, List<InputConfig> inputConfigs, bool enableKeyboard, bool enableMouse, bool enableAutoAssign)
{ {
Device = device; Device = device;
@ -133,7 +133,7 @@ namespace Ryujinx.Headless
Renderer = renderer; Renderer = renderer;
NpadManager.Initialize(device, inputConfigs, enableKeyboard, enableMouse); NpadManager.Initialize(device, inputConfigs, enableKeyboard, enableMouse, enableAutoAssign);
TouchScreenManager.Initialize(device); TouchScreenManager.Initialize(device);
} }

View File

@ -127,7 +127,7 @@ namespace Ryujinx.Ava.Input
if (config is StandardControllerInputConfig standardConfig) if (config is StandardControllerInputConfig standardConfig)
{ {
Logger.Warning?.Print(LogClass.Application, $"Setting color for Player{index+1}"); Logger.Warning?.Print(LogClass.Application, $"Setting color for Player{index+1}");
standardConfig.Led.LedColor = _playerColors[index]; standardConfig.Led = new LedConfigController { EnableLed = true, LedColor = _playerColors[index] };
} }
index++; index++;
} }

View File

@ -868,6 +868,12 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
} }
} }
if (_mainWindow.ViewModel.AppHost != null)
{
_mainWindow.ViewModel.AppHost.NpadManager.AutoAssignEnabled =
ConfigurationState.Instance.Hid.EnableAutoAssign;
}
_mainWindow.ViewModel.AppHost?.NpadManager.ReloadConfiguration(newConfig, ConfigurationState.Instance.Hid.EnableKeyboard, ConfigurationState.Instance.Hid.EnableMouse); _mainWindow.ViewModel.AppHost?.NpadManager.ReloadConfiguration(newConfig, ConfigurationState.Instance.Hid.EnableKeyboard, ConfigurationState.Instance.Hid.EnableMouse);
// Atomically replace and signal input change. // Atomically replace and signal input change.