aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx/UI/ViewModels/Input/ControllerInputViewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx/UI/ViewModels/Input/ControllerInputViewModel.cs')
-rw-r--r--src/Ryujinx/UI/ViewModels/Input/ControllerInputViewModel.cs84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/Ryujinx/UI/ViewModels/Input/ControllerInputViewModel.cs b/src/Ryujinx/UI/ViewModels/Input/ControllerInputViewModel.cs
new file mode 100644
index 00000000..6ee79a37
--- /dev/null
+++ b/src/Ryujinx/UI/ViewModels/Input/ControllerInputViewModel.cs
@@ -0,0 +1,84 @@
+using Avalonia.Svg.Skia;
+using Ryujinx.Ava.UI.Models.Input;
+using Ryujinx.Ava.UI.Views.Input;
+
+namespace Ryujinx.Ava.UI.ViewModels.Input
+{
+ public class ControllerInputViewModel : BaseModel
+ {
+ private GamepadInputConfig _config;
+ public GamepadInputConfig Config
+ {
+ get => _config;
+ set
+ {
+ _config = value;
+ OnPropertyChanged();
+ }
+ }
+
+ private bool _isLeft;
+ public bool IsLeft
+ {
+ get => _isLeft;
+ set
+ {
+ _isLeft = value;
+ OnPropertyChanged();
+ OnPropertyChanged(nameof(HasSides));
+ }
+ }
+
+ private bool _isRight;
+ public bool IsRight
+ {
+ get => _isRight;
+ set
+ {
+ _isRight = value;
+ OnPropertyChanged();
+ OnPropertyChanged(nameof(HasSides));
+ }
+ }
+
+ public bool HasSides => IsLeft ^ IsRight;
+
+ private SvgImage _image;
+ public SvgImage Image
+ {
+ get => _image;
+ set
+ {
+ _image = value;
+ OnPropertyChanged();
+ }
+ }
+
+ public readonly InputViewModel ParentModel;
+
+ public ControllerInputViewModel(InputViewModel model, GamepadInputConfig config)
+ {
+ ParentModel = model;
+ model.NotifyChangesEvent += OnParentModelChanged;
+ OnParentModelChanged();
+ Config = config;
+ }
+
+ public async void ShowMotionConfig()
+ {
+ await MotionInputView.Show(this);
+ }
+
+ public async void ShowRumbleConfig()
+ {
+ await RumbleInputView.Show(this);
+ }
+
+ public void OnParentModelChanged()
+ {
+ IsLeft = ParentModel.IsLeft;
+ IsRight = ParentModel.IsRight;
+ Image = ParentModel.Image;
+ }
+ }
+}