Fix for duplicate controller names under Ava when two controllers of the same type are attached (#29)

This commit is contained in:
TheToid 2024-10-22 01:25:14 +10:00 committed by GitHub
parent 9ae89d55ca
commit 0f3c7f920b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 51 additions and 26 deletions

View file

@ -433,12 +433,28 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
public void LoadDevices()
{
string GetGamepadName(IGamepad gamepad, int controllerNumber)
{
return $"{GetShortGamepadName(gamepad.Name)} ({controllerNumber})";
}
string GetUniqueGamepadName(IGamepad gamepad, ref int controllerNumber)
{
string name = GetGamepadName(gamepad, controllerNumber);
if (Devices.Any(controller => controller.Name == name))
{
controllerNumber++;
name = GetGamepadName(gamepad, controllerNumber);
}
return name;
}
lock (Devices)
{
Devices.Clear();
DeviceList.Clear();
Devices.Add((DeviceType.None, Disabled, LocaleManager.Instance[LocaleKeys.ControllerSettingsDeviceDisabled]));
int controllerNumber = 0;
foreach (string id in _mainWindow.InputManager.KeyboardDriver.GamepadsIds)
{
using IGamepad gamepad = _mainWindow.InputManager.KeyboardDriver.GetGamepad(id);
@ -455,17 +471,11 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
if (gamepad != null)
{
if (Devices.Any(controller => GetShortGamepadId(controller.Id) == GetShortGamepadId(gamepad.Id)))
{
_controllerNumber++;
}
Devices.Add((DeviceType.Controller, id, $"{GetShortGamepadName(gamepad.Name)} ({_controllerNumber})"));
string name = GetUniqueGamepadName(gamepad, ref controllerNumber);
Devices.Add((DeviceType.Controller, id, name));
}
}
_controllerNumber = 0;
DeviceList.AddRange(Devices.Select(x => x.Name));
Device = Math.Min(Device, DeviceList.Count);
}
@ -679,7 +689,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
if (!File.Exists(path))
{
var index = ProfilesList.IndexOf(ProfileName);
int index = ProfilesList.IndexOf(ProfileName);
if (index != -1)
{
ProfilesList.RemoveAt(index);