diff --git a/src/Ryujinx/AutoAssignController.cs b/src/Ryujinx/AutoAssignController.cs index 78b35fd65..a44ff4f58 100644 --- a/src/Ryujinx/AutoAssignController.cs +++ b/src/Ryujinx/AutoAssignController.cs @@ -1,4 +1,5 @@ -using Ryujinx.Ava.UI.ViewModels; +using Avalonia.Media; +using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.Utilities.Configuration; using Ryujinx.Common.Configuration.Hid; @@ -16,6 +17,17 @@ namespace Ryujinx.Ava { public class AutoAssignController { + private readonly uint[] _playerColors = + [ + 0xFFFF0000, // Player 1 - Red + 0xFF0000FF, // Player 2 - Blue + 0xFF00FF00, // Player 3 - Green + 0xFFFFFF00, // Player 4 - Yellow + 0xFFFF00FF, // Player 5 - Magenta + 0xFFFFA500, // Player 6 - Orange + 0xFF00FFFF, // Player 7 - Cyan + 0xFF800080 // Player 8 - Purple + ]; private const int MaxControllers = 9; private readonly InputManager _inputManager; @@ -48,6 +60,11 @@ namespace Ryujinx.Ava foreach (var config in newConfig) { config.PlayerIndex = (PlayerIndex)index; + if (config is StandardControllerInputConfig standardConfig) + { + Logger.Warning?.Print(LogClass.Application, $"Setting color for player {index+1}"); + standardConfig.Led.LedColor = _playerColors[index]; + } index++; } @@ -213,7 +230,7 @@ namespace Ryujinx.Ava }, Led = new LedConfigController { - EnableLed = false, + EnableLed = true, TurnOffLed = false, UseRainbow = false, LedColor = 0, diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.cs b/src/Ryujinx/Headless/HeadlessRyujinx.cs index ea0727897..d61691405 100644 --- a/src/Ryujinx/Headless/HeadlessRyujinx.cs +++ b/src/Ryujinx/Headless/HeadlessRyujinx.cs @@ -38,7 +38,6 @@ namespace Ryujinx.Headless private static LibHacHorizonManager _libHacHorizonManager; private static UserChannelPersistence _userChannelPersistence; private static InputManager _inputManager; - private static AutoAssignController _autoAssignController; private static Switch _emulationContext; private static WindowBase _window; private static WindowsMultimediaTimerResolution _windowsMultimediaTimerResolution; diff --git a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs index d00712d81..e89e308bf 100644 --- a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs @@ -363,7 +363,12 @@ namespace Ryujinx.Ava.UI.ViewModels.Input private void HandleOnGamepadConnected(string id) { - Dispatcher.UIThread.Post(LoadDevices); + Dispatcher.UIThread.Post(() => + { + LoadDevices(); + LoadConfiguration(); + LoadDevice(); + }); } private string GetCurrentGamepadId()