MotionSettingsWindow.axaml.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using Avalonia.Controls;
  2. using Avalonia.Markup.Xaml;
  3. using FluentAvalonia.UI.Controls;
  4. using Ryujinx.Ava.Common.Locale;
  5. using Ryujinx.Ava.Ui.Models;
  6. using Ryujinx.Ava.Ui.ViewModels;
  7. using Ryujinx.Common.Configuration.Hid.Controller;
  8. using System.Threading.Tasks;
  9. namespace Ryujinx.Ava.Ui.Windows
  10. {
  11. public class MotionSettingsWindow : UserControl
  12. {
  13. private readonly InputConfiguration<GamepadInputId, StickInputId> _viewmodel;
  14. public MotionSettingsWindow()
  15. {
  16. InitializeComponent();
  17. }
  18. public MotionSettingsWindow(ControllerSettingsViewModel viewmodel)
  19. {
  20. var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
  21. _viewmodel = new InputConfiguration<GamepadInputId, StickInputId>()
  22. {
  23. Slot = config.Slot,
  24. AltSlot = config.AltSlot,
  25. DsuServerHost = config.DsuServerHost,
  26. DsuServerPort = config.DsuServerPort,
  27. MirrorInput = config.MirrorInput,
  28. EnableMotion = config.EnableMotion,
  29. Sensitivity = config.Sensitivity,
  30. GyroDeadzone = config.GyroDeadzone,
  31. EnableCemuHookMotion = config.EnableCemuHookMotion
  32. };
  33. InitializeComponent();
  34. }
  35. private void InitializeComponent()
  36. {
  37. DataContext = _viewmodel;
  38. AvaloniaXamlLoader.Load(this);
  39. }
  40. public static async Task Show(ControllerSettingsViewModel viewmodel, StyleableWindow window)
  41. {
  42. ContentDialog contentDialog = window.ContentDialog;
  43. string name = string.Empty;
  44. MotionSettingsWindow content = new MotionSettingsWindow(viewmodel);
  45. if (contentDialog != null)
  46. {
  47. contentDialog.Title = LocaleManager.Instance["ControllerMotionTitle"];
  48. contentDialog.PrimaryButtonText = LocaleManager.Instance["ControllerSettingsSave"];
  49. contentDialog.SecondaryButtonText = "";
  50. contentDialog.CloseButtonText = LocaleManager.Instance["ControllerSettingsClose"];
  51. contentDialog.Content = content;
  52. contentDialog.PrimaryButtonClick += (sender, args) =>
  53. {
  54. var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
  55. config.Slot = content._viewmodel.Slot;
  56. config.EnableMotion = content._viewmodel.EnableMotion;
  57. config.Sensitivity = content._viewmodel.Sensitivity;
  58. config.GyroDeadzone = content._viewmodel.GyroDeadzone;
  59. config.AltSlot = content._viewmodel.AltSlot;
  60. config.DsuServerHost = content._viewmodel.DsuServerHost;
  61. config.DsuServerPort = content._viewmodel.DsuServerPort;
  62. config.EnableCemuHookMotion = content._viewmodel.EnableCemuHookMotion;
  63. config.MirrorInput = content._viewmodel.MirrorInput;
  64. };
  65. await contentDialog.ShowAsync();
  66. }
  67. }
  68. }
  69. }