MotionSettingsWindow.axaml.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 partial class MotionSettingsWindow : UserControl
  12. {
  13. private readonly InputConfiguration<GamepadInputId, StickInputId> _viewmodel;
  14. public MotionSettingsWindow()
  15. {
  16. InitializeComponent();
  17. DataContext = _viewmodel;
  18. }
  19. public MotionSettingsWindow(ControllerSettingsViewModel viewmodel)
  20. {
  21. var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
  22. _viewmodel = new InputConfiguration<GamepadInputId, StickInputId>()
  23. {
  24. Slot = config.Slot,
  25. AltSlot = config.AltSlot,
  26. DsuServerHost = config.DsuServerHost,
  27. DsuServerPort = config.DsuServerPort,
  28. MirrorInput = config.MirrorInput,
  29. EnableMotion = config.EnableMotion,
  30. Sensitivity = config.Sensitivity,
  31. GyroDeadzone = config.GyroDeadzone,
  32. EnableCemuHookMotion = config.EnableCemuHookMotion
  33. };
  34. InitializeComponent();
  35. DataContext = _viewmodel;
  36. }
  37. public static async Task Show(ControllerSettingsViewModel viewmodel)
  38. {
  39. MotionSettingsWindow content = new MotionSettingsWindow(viewmodel);
  40. ContentDialog contentDialog = new ContentDialog
  41. {
  42. Title = LocaleManager.Instance["ControllerMotionTitle"],
  43. PrimaryButtonText = LocaleManager.Instance["ControllerSettingsSave"],
  44. SecondaryButtonText = "",
  45. CloseButtonText = LocaleManager.Instance["ControllerSettingsClose"],
  46. Content = content
  47. };
  48. contentDialog.PrimaryButtonClick += (sender, args) =>
  49. {
  50. var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
  51. config.Slot = content._viewmodel.Slot;
  52. config.EnableMotion = content._viewmodel.EnableMotion;
  53. config.Sensitivity = content._viewmodel.Sensitivity;
  54. config.GyroDeadzone = content._viewmodel.GyroDeadzone;
  55. config.AltSlot = content._viewmodel.AltSlot;
  56. config.DsuServerHost = content._viewmodel.DsuServerHost;
  57. config.DsuServerPort = content._viewmodel.DsuServerPort;
  58. config.EnableCemuHookMotion = content._viewmodel.EnableCemuHookMotion;
  59. config.MirrorInput = content._viewmodel.MirrorInput;
  60. };
  61. await contentDialog.ShowAsync();
  62. }
  63. }
  64. }