diff --git a/src/Ryujinx/Input/AutoAssignController.cs b/src/Ryujinx/Input/AutoAssignController.cs index 360d0af64..49fceed71 100644 --- a/src/Ryujinx/Input/AutoAssignController.cs +++ b/src/Ryujinx/Input/AutoAssignController.cs @@ -15,7 +15,6 @@ namespace Ryujinx.Ava.Input private readonly InputManager _inputManager; private readonly MainWindowViewModel _viewModel; private readonly ConfigurationState _configurationState; - private readonly ControllerAssignmentManager _assignmentManager; public event Action ConfigurationUpdated; @@ -24,7 +23,6 @@ namespace Ryujinx.Ava.Input _inputManager = inputManager; _viewModel = mainWindowViewModel; _configurationState = ConfigurationState.Instance; - _assignmentManager = new ControllerAssignmentManager(); _inputManager.GamepadDriver.OnGamepadConnected += HandleOnGamepadConnected; _inputManager.GamepadDriver.OnGamepadDisconnected += HandleOnGamepadDisconnected; @@ -51,7 +49,7 @@ namespace Ryujinx.Ava.Input List controllers = _inputManager.GamepadDriver.GetGamepads().ToList(); List oldConfig = _configurationState.Hid.InputConfig.Value.Where(x => x != null).ToList(); - List newConfig = _assignmentManager.GetConfiguredControllers( + List newConfig = ControllerAssignmentManager.GetConfiguredControllers( controllers, oldConfig, out bool hasNewControllersConnected); _viewModel.AppHost?.NpadManager.ReloadConfiguration(newConfig, _configurationState.Hid.EnableKeyboard, _configurationState.Hid.EnableMouse); diff --git a/src/Ryujinx/Input/ControllerAssignmentManager.cs b/src/Ryujinx/Input/ControllerAssignmentManager.cs index 8b24cb073..9e9612d12 100644 --- a/src/Ryujinx/Input/ControllerAssignmentManager.cs +++ b/src/Ryujinx/Input/ControllerAssignmentManager.cs @@ -10,9 +10,9 @@ using StickInputId = Ryujinx.Common.Configuration.Hid.Controller.StickInputId; namespace Ryujinx.Ava.Input { - public class ControllerAssignmentManager + public static class ControllerAssignmentManager { - private readonly uint[] _playerColors = + private static readonly uint[] _playerColors = [ 0xFFFF0000, // Player 1 - Red 0xFF0000FF, // Player 2 - Blue @@ -43,11 +43,17 @@ namespace Ryujinx.Ava.Input return reorderedConfig; } - public List GetConfiguredControllers( + public static List GetConfiguredControllers( List controllers, List oldConfig, out bool hasNewControllersConnected) { + if(controllers == null || controllers.Count == 0) + { + hasNewControllersConnected = false; + return []; + } + Dictionary oldConfigMap = oldConfig .Where(c => c?.Id != null) .ToDictionary(x => x.Id); @@ -134,7 +140,7 @@ namespace Ryujinx.Ava.Input return -1; // Should not happen unless MaxControllers is exceeded } - private void UpdatePlayerIndicesAndLEDs(List orderedConfigs) + private static void UpdatePlayerIndicesAndLEDs(List orderedConfigs) { for (int index = 0; index < orderedConfigs.Count; index++) {