refactor: enhance AutoAssignController to utilize ViewModel and improve controller refresh logic

This commit is contained in:
uncavo-hdmi
2025-02-02 16:35:30 +01:00
parent ab4bb0a885
commit 3ff9d1e128
5 changed files with 59 additions and 138 deletions

View File

@@ -810,7 +810,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
{
IsModified = false;
List<InputConfig> newConfig = new();
List<InputConfig> newConfig = [];
newConfig.AddRange(ConfigurationState.Instance.Hid.InputConfig.Value);
@@ -851,12 +851,12 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
newConfig[i] = config;
}
}
//_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.
// NOTE: Do not modify InputConfig.Value directly as other code depends on the on-change event.
//ConfigurationState.Instance.Hid.InputConfig.Value = newConfig;
_mainWindow.AutoAssignController.RefreshControllers(newConfig);
ConfigurationState.Instance.Hid.InputConfig.Value = newConfig;
ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
}

View File

@@ -620,6 +620,7 @@ namespace Ryujinx.Ava.UI.ViewModels
config.System.EnableDockedMode.Value = EnableDockedMode;
config.Hid.EnableKeyboard.Value = EnableKeyboard;
config.Hid.EnableMouse.Value = EnableMouse;
bool activatingAutoAssign = EnableAutoAssign && !config.Hid.EnableAutoAssign;
config.Hid.EnableAutoAssign.Value = EnableAutoAssign;
// Keyboard Hotkeys
@@ -715,7 +716,14 @@ namespace Ryujinx.Ava.UI.ViewModels
MainWindow.UpdateGraphicsConfig();
RyujinxApp.MainWindow.ViewModel.VSyncModeSettingChanged();
SaveSettingsEvent?.Invoke();
if(activatingAutoAssign)
{
RyujinxApp.MainWindow.AutoAssignController.RefreshControllers();
}
else
{
SaveSettingsEvent?.Invoke();
}
GameDirectoryChanged = false;
AutoloadDirectoryChanged = false;