From 312fc97034f9c1f7b4df5cf54a32971b619b5951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= Date: Mon, 12 Dec 2022 12:31:59 +0100 Subject: [PATCH] SteamController: Detect RTSS in foreground --- {PowerControl/Helpers => CommonHelpers}/RTSS.cs | 10 ++-------- SteamController/Context.cs | 4 +++- SteamController/Controller.cs | 1 + SteamController/Managers/RTSSManager.cs | 12 ++++++++++++ SteamController/SettingsDebug.cs | 7 +++++++ 5 files changed, 25 insertions(+), 9 deletions(-) rename {PowerControl/Helpers => CommonHelpers}/RTSS.cs (96%) create mode 100644 SteamController/Managers/RTSSManager.cs diff --git a/PowerControl/Helpers/RTSS.cs b/CommonHelpers/RTSS.cs similarity index 96% rename from PowerControl/Helpers/RTSS.cs rename to CommonHelpers/RTSS.cs index a0f5e3d..94f2b84 100644 --- a/PowerControl/Helpers/RTSS.cs +++ b/CommonHelpers/RTSS.cs @@ -1,15 +1,9 @@ using RTSSSharedMemoryNET; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; -namespace PowerControl.Helpers +namespace CommonHelpers { - internal static class RTSS + public static class RTSS { public static bool IsOSDForeground() { diff --git a/SteamController/Context.cs b/SteamController/Context.cs index 39e7ddc..c59caa0 100644 --- a/SteamController/Context.cs +++ b/SteamController/Context.cs @@ -22,12 +22,13 @@ namespace SteamController public struct ContextState { public bool GameProcessRunning { get; set; } + public bool RTSSInForeground { get; set; } public bool SteamUsesX360Controller { get; set; } public bool SteamUsesSteamInput { get; set; } public bool IsActive { - get { return GameProcessRunning || SteamUsesSteamInput || SteamUsesSteamInput; } + get { return RTSSInForeground || GameProcessRunning || SteamUsesSteamInput || SteamUsesSteamInput; } } public override string ToString() @@ -36,6 +37,7 @@ namespace SteamController if (GameProcessRunning) reason += " game"; if (SteamUsesX360Controller) reason += " steamX360"; if (SteamUsesSteamInput) reason += " steamInput"; + if (RTSSInForeground) reason += " rtss"; return reason; } } diff --git a/SteamController/Controller.cs b/SteamController/Controller.cs index 809e6fb..c73d862 100644 --- a/SteamController/Controller.cs +++ b/SteamController/Controller.cs @@ -31,6 +31,7 @@ namespace SteamController Managers = { new Managers.ProcessManager(), new Managers.SteamManager(), + new Managers.RTSSManager(), new Managers.ProfileSwitcher(), new Managers.SteamConfigsManager(), new Managers.SharedDataManager(), diff --git a/SteamController/Managers/RTSSManager.cs b/SteamController/Managers/RTSSManager.cs new file mode 100644 index 0000000..20d977b --- /dev/null +++ b/SteamController/Managers/RTSSManager.cs @@ -0,0 +1,12 @@ +using CommonHelpers; + +namespace SteamController.Managers +{ + public sealed class RTSSManager : Manager + { + public override void Tick(Context context) + { + context.State.RTSSInForeground = SettingsDebug.Default.DetectRTSSForeground && RTSS.IsOSDForeground(); + } + } +} diff --git a/SteamController/SettingsDebug.cs b/SteamController/SettingsDebug.cs index aa22a7b..a4e5250 100644 --- a/SteamController/SettingsDebug.cs +++ b/SteamController/SettingsDebug.cs @@ -20,6 +20,13 @@ namespace SteamController set { Set("KeepX360AlwaysConnected", value); } } + [Description("If current foreground process uses overlay, treat it as a game.")] + public bool DetectRTSSForeground + { + get { return Get("DetectRTSSForeground", false); } + set { Set("DetectRTSSForeground", value); } + } + [Description("Use Lizard Buttons instead of emulated. This option is only for testing purposes.")] public bool LizardButtons { get; set; } = false;