using Avalonia; using Avalonia.Controls; using Avalonia.VisualTree; using Mesen.Config; using Mesen.Utilities; using Mesen.Windows; using ReactiveUI; using ReactiveUI.Fody.Helpers; using System; using System.Reactive; namespace Mesen.ViewModels { public class WsConfigViewModel : DisposableViewModel { [Reactive] public WsConfig Config { get; set; } [Reactive] public WsConfig OriginalConfig { get; set; } [Reactive] public WsConfigTab SelectedTab { get; set; } = 0; public ReactiveCommand SetupPlayerHorizontal { get; } public ReactiveCommand SetupPlayerVertical { get; } public WsConfigViewModel() { Config = ConfigManager.Config.Ws; OriginalConfig = Config.Clone(); IObservable button1Enabled = this.WhenAnyValue(x => x.Config.ControllerHorizontal.Type, x => x.CanConfigure()); IObservable button2Enabled = this.WhenAnyValue(x => x.Config.ControllerVertical.Type, x => x.CanConfigure()); SetupPlayerHorizontal = ReactiveCommand.Create