diff --git a/HandheldCompanion/Actions/IActions.cs b/HandheldCompanion/Actions/IActions.cs index 0ed72e13f..303edcfab 100644 --- a/HandheldCompanion/Actions/IActions.cs +++ b/HandheldCompanion/Actions/IActions.cs @@ -125,7 +125,7 @@ public virtual void SetHaptic(ButtonFlags button, bool up) if (this.HapticMode == HapticMode.Down && up) return; if (this.HapticMode == HapticMode.Up && !up) return; - ControllerManager.GetTargetController()?.SetHaptic(this.HapticStrength, button); + ControllerManager.GetTarget()?.SetHaptic(this.HapticStrength, button); } public virtual void Execute(ButtonFlags button, bool value, ShiftSlot shiftSlot = Actions.ShiftSlot.None) diff --git a/HandheldCompanion/Managers/ControllerManager.cs b/HandheldCompanion/Managers/ControllerManager.cs index afcb20575..627bd3550 100644 --- a/HandheldCompanion/Managers/ControllerManager.cs +++ b/HandheldCompanion/Managers/ControllerManager.cs @@ -988,7 +988,7 @@ private static async void XUsbDeviceRemoved(PnPDetails details, Guid IntefaceGui } } - public static bool HasTargetController => GetTargetController() != null; + public static bool HasTargetController => GetTarget() != null; private static void ClearTargetController() { @@ -1187,11 +1187,16 @@ public static bool ResumeControllers() return false; } - public static IController GetTargetController() + public static IController GetTarget() { return targetController; } + public static IController GetTargetOrDefault() + { + return targetController is not null ? targetController : GetDefault(); + } + public static bool IsTargetController(string InstanceId) { return targetController?.GetInstanceId() == InstanceId; diff --git a/HandheldCompanion/Managers/InputsManager.cs b/HandheldCompanion/Managers/InputsManager.cs index 612b2ac0c..5274e078d 100644 --- a/HandheldCompanion/Managers/InputsManager.cs +++ b/HandheldCompanion/Managers/InputsManager.cs @@ -262,7 +262,7 @@ private static void M_GlobalHook_KeyEvent(object? sender, KeyEventArgs e) BufferKeys[args.IsKeyDown].Add(new KeyEventArgsExt((Keys)keyCode, args.ScanCode, args.Timestamp, args.IsKeyDown, args.IsKeyUp, false, args.Flags)); // calls current controller (if connected) - IController controller = ControllerManager.GetTargetController(); + IController controller = ControllerManager.GetTarget(); controller?.InjectState(chord.state, args.IsKeyDown, args.IsKeyUp); // remove chord @@ -394,7 +394,7 @@ private static void M_GlobalHook_KeyEvent(object? sender, KeyEventArgs e) BufferKeys[args.IsKeyDown].Clear(); // calls current controller (if connected) - IController controller = ControllerManager.GetTargetController(); + IController controller = ControllerManager.GetTarget(); controller?.InjectState(chord.state, args.IsKeyDown, args.IsKeyUp); return; @@ -425,7 +425,7 @@ private static void M_GlobalHook_KeyEvent(object? sender, KeyEventArgs e) // store successful hotkey successkeyChords.Add(chord); - IController controller = ControllerManager.GetTargetController(); + IController controller = ControllerManager.GetTarget(); controller?.InjectState(chord.state, args.IsKeyDown, args.IsKeyUp); return; diff --git a/HandheldCompanion/Managers/LayoutManager.cs b/HandheldCompanion/Managers/LayoutManager.cs index f7fc45c54..74d0c4284 100644 --- a/HandheldCompanion/Managers/LayoutManager.cs +++ b/HandheldCompanion/Managers/LayoutManager.cs @@ -350,25 +350,28 @@ private void UpdateInherit() lock (updateLock) { // Check for inherit(s) and replace actions with default layout actions where necessary - IController controller = ControllerManager.GetTargetController(); - foreach (ButtonFlags buttonFlags in controller.GetTargetButtons()) + IController controller = ControllerManager.GetTargetOrDefault(); + if (controller is not null) { - if (currentLayout.ButtonLayout.TryGetValue(buttonFlags, out var actions) && actions.Any(action => action is InheritActions)) + foreach (ButtonFlags buttonFlags in controller.GetTargetButtons()) { - // Replace with default layout actions - if (defaultLayout.ButtonLayout.TryGetValue(buttonFlags, out var defaultActions)) - currentLayout.ButtonLayout[buttonFlags].AddRange(defaultActions); + if (currentLayout.ButtonLayout.TryGetValue(buttonFlags, out var actions) && actions.Any(action => action is InheritActions)) + { + // Replace with default layout actions + if (defaultLayout.ButtonLayout.TryGetValue(buttonFlags, out var defaultActions)) + currentLayout.ButtonLayout[buttonFlags].AddRange(defaultActions); + } } - } - // Check for inherit(s) and replace actions with default layout actions where necessary - foreach (AxisLayoutFlags axisLayout in controller.GetTargetAxis().Union(controller.GetTargetTriggers())) - { - if (currentLayout.AxisLayout.TryGetValue(axisLayout, out var actions) && actions is InheritActions) + // Check for inherit(s) and replace actions with default layout actions where necessary + foreach (AxisLayoutFlags axisLayout in controller.GetTargetAxis().Union(controller.GetTargetTriggers())) { - // Replace with default layout actions - if (defaultLayout.AxisLayout.TryGetValue(axisLayout, out var defaultActions)) - currentLayout.AxisLayout[axisLayout] = defaultActions; + if (currentLayout.AxisLayout.TryGetValue(axisLayout, out var actions) && actions is InheritActions) + { + // Replace with default layout actions + if (defaultLayout.AxisLayout.TryGetValue(axisLayout, out var defaultActions)) + currentLayout.AxisLayout[axisLayout] = defaultActions; + } } } } diff --git a/HandheldCompanion/Managers/ProfileManager.cs b/HandheldCompanion/Managers/ProfileManager.cs index 9c484308d..99ab8cc57 100644 --- a/HandheldCompanion/Managers/ProfileManager.cs +++ b/HandheldCompanion/Managers/ProfileManager.cs @@ -100,7 +100,7 @@ public static void Start() if (ControllerManager.IsInitialized) { - ControllerManager_ControllerPlugged(ControllerManager.GetTargetController(), false); + ControllerManager_ControllerPlugged(ControllerManager.GetTarget(), false); } IsInitialized = true; diff --git a/HandheldCompanion/Managers/SensorsManager.cs b/HandheldCompanion/Managers/SensorsManager.cs index fcf4ebbd0..a641fcdb3 100644 --- a/HandheldCompanion/Managers/SensorsManager.cs +++ b/HandheldCompanion/Managers/SensorsManager.cs @@ -62,7 +62,7 @@ public static void Start() if (ControllerManager.HasTargetController) { - ControllerManager_ControllerSelected(ControllerManager.GetTargetController()); + ControllerManager_ControllerSelected(ControllerManager.GetTarget()); } IsInitialized = true; @@ -143,7 +143,7 @@ private static void DeviceManager_UsbDeviceRemoved(PnPDevice device, Guid Intefa private static void PickNextSensor() { // get current controller - IController controller = ControllerManager.GetTargetController(); + IController controller = ControllerManager.GetTarget(); if (controller is not null && controller.HasMotionSensor()) ManagerFactory.settingsManager.SetProperty("SensorSelection", (int)SensorFamily.Controller); @@ -227,7 +227,7 @@ private static void SettingsManager_SettingValueChanged(string name, object valu case SensorFamily.Controller: { // get current controller - IController controller = ControllerManager.GetTargetController(); + IController controller = ControllerManager.GetTarget(); if (controller is null || !controller.Capabilities.HasFlag(ControllerCapabilities.MotionSensor)) { PickNextSensor(); diff --git a/HandheldCompanion/Misc/Hotkey.cs b/HandheldCompanion/Misc/Hotkey.cs index a48d5f174..d15ced176 100644 --- a/HandheldCompanion/Misc/Hotkey.cs +++ b/HandheldCompanion/Misc/Hotkey.cs @@ -65,7 +65,7 @@ public void Execute(bool onKeyDown, bool onKeyUp, bool IsBackground) { bool Rumble = ManagerFactory.settingsManager.GetBoolean("HotkeyRumbleOnExecution"); if (Rumble && !IsBackground && !IsInternal) - ControllerManager.GetTargetController()?.Rumble(); + ControllerManager.GetTarget()?.Rumble(); command?.Execute(command.OnKeyDown, command.OnKeyUp, IsBackground); } diff --git a/HandheldCompanion/ViewModels/HotkeyViewModel.cs b/HandheldCompanion/ViewModels/HotkeyViewModel.cs index 39455f814..7ff21e5ee 100644 --- a/HandheldCompanion/ViewModels/HotkeyViewModel.cs +++ b/HandheldCompanion/ViewModels/HotkeyViewModel.cs @@ -548,9 +548,7 @@ public void DrawChords() foreach (FontIconViewModel FontIconViewModel in ButtonGlyphs.ToList()) ButtonGlyphs.SafeRemove(FontIconViewModel); - IController? controller = ControllerManager.GetTargetController(); - if (controller is null) - controller = ControllerManager.GetDefault(); + IController controller = ControllerManager.GetTargetOrDefault(); // UI thread UIHelper.TryInvoke(() => diff --git a/HandheldCompanion/ViewModels/Layout/Mappings/ButtonMappingViewModel.cs b/HandheldCompanion/ViewModels/Layout/Mappings/ButtonMappingViewModel.cs index a37e9d117..43651a677 100644 --- a/HandheldCompanion/ViewModels/Layout/Mappings/ButtonMappingViewModel.cs +++ b/HandheldCompanion/ViewModels/Layout/Mappings/ButtonMappingViewModel.cs @@ -257,7 +257,7 @@ public ButtonMappingViewModel(ButtonStackViewModel parentStack, ButtonFlags butt if (isInitialMapping) { - var controller = ControllerManager.GetTargetController(); + var controller = ControllerManager.GetTarget(); if (controller is not null) UpdateController(controller); } diff --git a/HandheldCompanion/ViewModels/Layout/Mappings/ButtonStackViewModel.cs b/HandheldCompanion/ViewModels/Layout/Mappings/ButtonStackViewModel.cs index 45b2b7e8e..88721e9f8 100644 --- a/HandheldCompanion/ViewModels/Layout/Mappings/ButtonStackViewModel.cs +++ b/HandheldCompanion/ViewModels/Layout/Mappings/ButtonStackViewModel.cs @@ -42,7 +42,7 @@ public ButtonStackViewModel(ButtonFlags flag) // send events if (ControllerManager.HasTargetController) { - UpdateController(ControllerManager.GetTargetController()); + UpdateController(ControllerManager.GetTarget()); } } diff --git a/HandheldCompanion/ViewModels/Layout/Mappings/MappingViewModel.cs b/HandheldCompanion/ViewModels/Layout/Mappings/MappingViewModel.cs index e37c51dae..9d4f0819c 100644 --- a/HandheldCompanion/ViewModels/Layout/Mappings/MappingViewModel.cs +++ b/HandheldCompanion/ViewModels/Layout/Mappings/MappingViewModel.cs @@ -170,7 +170,7 @@ public MappingViewModel(object value) // send events if (ControllerManager.HasTargetController) { - UpdateController(ControllerManager.GetTargetController()); + UpdateController(ControllerManager.GetTarget()); } // Send update event to Model diff --git a/HandheldCompanion/ViewModels/Layout/Pages/ILayoutPageViewModel.cs b/HandheldCompanion/ViewModels/Layout/Pages/ILayoutPageViewModel.cs index b94f1f40e..2609593d3 100644 --- a/HandheldCompanion/ViewModels/Layout/Pages/ILayoutPageViewModel.cs +++ b/HandheldCompanion/ViewModels/Layout/Pages/ILayoutPageViewModel.cs @@ -27,7 +27,7 @@ public ILayoutPageViewModel() // send events if (ControllerManager.HasTargetController) { - UpdateController(ControllerManager.GetTargetController()); + UpdateController(ControllerManager.GetTarget()); } } diff --git a/HandheldCompanion/ViewModels/Pages/ControllerPageViewModel.cs b/HandheldCompanion/ViewModels/Pages/ControllerPageViewModel.cs index d5c5b2289..a0d71cb6a 100644 --- a/HandheldCompanion/ViewModels/Pages/ControllerPageViewModel.cs +++ b/HandheldCompanion/ViewModels/Pages/ControllerPageViewModel.cs @@ -31,7 +31,7 @@ public ControllerPageViewModel(ControllerPage controllerPage) // send events if (ControllerManager.HasTargetController) { - ControllerManager_ControllerSelected(ControllerManager.GetTargetController()); + ControllerManager_ControllerSelected(ControllerManager.GetTarget()); } } diff --git a/HandheldCompanion/ViewModels/Pages/HotkeyPageViewModel.cs b/HandheldCompanion/ViewModels/Pages/HotkeyPageViewModel.cs index 53cb66206..0f8f25faf 100644 --- a/HandheldCompanion/ViewModels/Pages/HotkeyPageViewModel.cs +++ b/HandheldCompanion/ViewModels/Pages/HotkeyPageViewModel.cs @@ -42,7 +42,7 @@ public HotkeyPageViewModel() // raise event if (ControllerManager.HasTargetController) { - ControllerManager_ControllerSelected(ControllerManager.GetTargetController()); + ControllerManager_ControllerSelected(ControllerManager.GetTarget()); } if (HotkeysManager.IsInitialized) diff --git a/HandheldCompanion/ViewModels/Pages/LayoutPageViewModel.cs b/HandheldCompanion/ViewModels/Pages/LayoutPageViewModel.cs index 34fe78027..27a4b51c5 100644 --- a/HandheldCompanion/ViewModels/Pages/LayoutPageViewModel.cs +++ b/HandheldCompanion/ViewModels/Pages/LayoutPageViewModel.cs @@ -47,7 +47,7 @@ public LayoutPageViewModel(LayoutPage layoutPage) if (ControllerManager.HasTargetController) { - ControllerManager_ControllerSelected(ControllerManager.GetTargetController()); + ControllerManager_ControllerSelected(ControllerManager.GetTarget()); } } @@ -106,7 +106,7 @@ private void RefreshLayoutList() bool FilterOnDevice = ManagerFactory.settingsManager.GetBoolean("LayoutFilterOnDevice"); // Get current controller - IController? controller = ControllerManager.GetTargetController(); + IController? controller = ControllerManager.GetTarget(); foreach (LayoutTemplateViewModel layoutTemplate in LayoutList) { diff --git a/HandheldCompanion/Views/Pages/ControllerPage.xaml.cs b/HandheldCompanion/Views/Pages/ControllerPage.xaml.cs index 0943433f7..c5e5a5ead 100644 --- a/HandheldCompanion/Views/Pages/ControllerPage.xaml.cs +++ b/HandheldCompanion/Views/Pages/ControllerPage.xaml.cs @@ -207,7 +207,7 @@ private TextBlock CreateFormattedContent(string title, string description) public void ControllerRefresh() { - IController targetController = ControllerManager.GetTargetController(); + IController targetController = ControllerManager.GetTarget(); bool hasPhysical = ControllerManager.HasPhysicalController(); bool hasVirtual = ControllerManager.HasVirtualController(); bool hasTarget = targetController != null; diff --git a/HandheldCompanion/Views/Pages/DevicePage.xaml.cs b/HandheldCompanion/Views/Pages/DevicePage.xaml.cs index 7795c6904..f3fc00dc7 100644 --- a/HandheldCompanion/Views/Pages/DevicePage.xaml.cs +++ b/HandheldCompanion/Views/Pages/DevicePage.xaml.cs @@ -65,7 +65,7 @@ public DevicePage(string? Tag) : this() // raise events if (ControllerManager.HasTargetController) { - ControllerManager_ControllerSelected(ControllerManager.GetTargetController()); + ControllerManager_ControllerSelected(ControllerManager.GetTarget()); } } @@ -507,7 +507,7 @@ private void ui_button_calibrate_Click(object sender, RoutedEventArgs e) break; case SensorFamily.Controller: - IController controller = ControllerManager.GetTargetController(); + IController controller = ControllerManager.GetTarget(); controller?.Calibrate(); break; } diff --git a/HandheldCompanion/Views/Pages/LayoutPage.xaml.cs b/HandheldCompanion/Views/Pages/LayoutPage.xaml.cs index 8b756b5ba..999c44bff 100644 --- a/HandheldCompanion/Views/Pages/LayoutPage.xaml.cs +++ b/HandheldCompanion/Views/Pages/LayoutPage.xaml.cs @@ -87,7 +87,7 @@ public void Initialize() // raise events if (ControllerManager.HasTargetController) { - ControllerManager_ControllerSelected(ControllerManager.GetTargetController()); + ControllerManager_ControllerSelected(ControllerManager.GetTarget()); } } @@ -277,7 +277,7 @@ private void LayoutExportButton_Click(object sender, RoutedEventArgs e) } if (ExportForCurrent.IsChecked == true) - newLayout.ControllerType = ControllerManager.GetTargetController()?.GetType(); + newLayout.ControllerType = ControllerManager.GetTarget()?.GetType(); ManagerFactory.layoutManager.SerializeLayoutTemplate(newLayout); diff --git a/HandheldCompanion/Views/Windows/OverlayQuickTools.xaml.cs b/HandheldCompanion/Views/Windows/OverlayQuickTools.xaml.cs index 4f4c1ba1b..fa9d61f32 100644 --- a/HandheldCompanion/Views/Windows/OverlayQuickTools.xaml.cs +++ b/HandheldCompanion/Views/Windows/OverlayQuickTools.xaml.cs @@ -118,7 +118,7 @@ public OverlayQuickTools() // raise events if (ControllerManager.HasTargetController) { - ControllerManager_ControllerSelected(ControllerManager.GetTargetController()); + ControllerManager_ControllerSelected(ControllerManager.GetTarget()); } // load gamepad navigation manager diff --git a/HandheldCompanion/Views/Windows/OverlayTrackpad.xaml.cs b/HandheldCompanion/Views/Windows/OverlayTrackpad.xaml.cs index 0f95dd921..1e3e70d32 100644 --- a/HandheldCompanion/Views/Windows/OverlayTrackpad.xaml.cs +++ b/HandheldCompanion/Views/Windows/OverlayTrackpad.xaml.cs @@ -174,7 +174,7 @@ private void Trackpad_PreviewTouchDown(object sender, TouchEventArgs e) LeftTrackpad.Opacity = TrackpadOpacity + TrackpadOpacityTouched; // send vibration (todo: make it a setting) - ControllerManager.GetTargetController()?.Rumble(); // (1, 25, 0, 60); + ControllerManager.GetTarget()?.Rumble(); // (1, 25, 0, 60); } break; case "RightTrackpad": @@ -188,7 +188,7 @@ private void Trackpad_PreviewTouchDown(object sender, TouchEventArgs e) RightTrackpad.Opacity = TrackpadOpacity + TrackpadOpacityTouched; // send vibration (todo: make it a setting) - ControllerManager.GetTargetController()?.Rumble(); // (1, 25, 0, 60); + ControllerManager.GetTarget()?.Rumble(); // (1, 25, 0, 60); } break; }