steam-deck-tools/SteamController/Managers/SteamManager.cs

84 lines
2.6 KiB
C#
Raw Normal View History

using System.Diagnostics;
using SteamController.Helpers;
namespace SteamController.Managers
{
public sealed class SteamManager : Manager
{
2022-12-04 21:14:08 +01:00
public const int DebounceStates = 1;
2022-12-04 20:43:57 +01:00
private string? lastState;
2022-12-04 21:14:08 +01:00
private int stateChanged;
public override void Tick(Context context)
{
if (Settings.Default.EnableSteamDetection != true)
{
context.State.SteamUsesSteamInput = false;
context.State.SteamUsesX360Controller = false;
2022-12-04 20:43:57 +01:00
lastState = null;
2022-12-04 21:14:08 +01:00
stateChanged = 0;
return;
}
2022-12-04 20:43:57 +01:00
var usesController = UsesController();
if (lastState == usesController)
2022-12-04 21:14:08 +01:00
{
stateChanged = 0;
return;
}
else if (stateChanged < DebounceStates)
{
stateChanged++;
return;
2022-12-04 21:14:08 +01:00
}
2022-12-04 20:43:57 +01:00
if (usesController is not null)
{
context.State.SteamUsesSteamInput = Helpers.SteamConfiguration.IsControllerBlacklisted(
Devices.SteamController.VendorID,
Devices.SteamController.ProductID
) != true;
context.State.SteamUsesX360Controller = Helpers.SteamConfiguration.IsControllerBlacklisted(
Devices.Xbox360Controller.VendorID,
Devices.Xbox360Controller.ProductID
) != true;
}
else
{
context.State.SteamUsesSteamInput = false;
context.State.SteamUsesX360Controller = false;
}
lastState = usesController;
2022-12-04 21:14:08 +01:00
stateChanged = 0;
2022-12-04 20:43:57 +01:00
#if DEBUG
CommonHelpers.Log.TraceLine(
"SteamManager: uses={0}, isRunning={1}, usesSteamInput={2}, usesX360={3}",
usesController,
SteamConfiguration.IsRunning,
context.State.SteamUsesSteamInput,
context.State.SteamUsesX360Controller
);
#endif
}
2022-12-04 20:43:57 +01:00
private string? UsesController()
{
if (!SteamConfiguration.IsRunning)
return null;
2022-12-04 20:43:57 +01:00
if (SteamConfiguration.IsBigPictureMode.GetValueOrDefault(false))
return "bigpicture";
if (SteamConfiguration.IsRunningGame.GetValueOrDefault(false))
return "game";
if (SteamConfiguration.IsGamePadUI)
return "gamepadui";
if (SteamConfiguration.IsPossibleGamePadUI)
return "possiblegamepadui";
2022-12-04 20:43:57 +01:00
return null;
}
}
}