diff --git a/UniTAS/Patcher/Implementations/RewiredFix/FallbackToUnityInput.cs b/UniTAS/Patcher/Implementations/RewiredFix/FallbackToUnityInput.cs deleted file mode 100644 index 39ac2e23..00000000 --- a/UniTAS/Patcher/Implementations/RewiredFix/FallbackToUnityInput.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using HarmonyLib; -using UniTAS.Patcher.Interfaces.DependencyInjection; -using UniTAS.Patcher.Services.InputSystemOverride; - -namespace UniTAS.Patcher.Implementations.RewiredFix; - -[Singleton] -[ForceInstantiate] -public class FallbackToUnityInput -{ - public FallbackToUnityInput(IInputSystemState inputSystemState) - { - if (!inputSystemState.HasRewired) return; - - var reInput = AccessTools.TypeByName("Rewired.ReInput"); - - if (reInput == null) - { - throw new Exception("failed to find Rewired.ReInput type, cannot apply fix"); - } - - var configuration = AccessTools.Property(reInput, "configuration")?.GetValue(null, null); - - if (configuration == null) - { - throw new Exception("failed to find Rewired.ReInput.configuration property, cannot apply fix"); - } - - var alwaysUseUnityInput = AccessTools.Property(configuration.GetType(), "alwaysUseUnityInput"); - - if (alwaysUseUnityInput == null) - { - throw new Exception( - "failed to find Rewired.ReInput.configuration.alwaysUseUnityInput property, cannot apply fix"); - } - - alwaysUseUnityInput.SetValue(configuration, true, null); - } -} \ No newline at end of file diff --git a/UniTAS/Patcher/Patches/Harmony/UnityInit/RewiredPatch.cs b/UniTAS/Patcher/Patches/Harmony/UnityInit/RewiredPatch.cs new file mode 100644 index 00000000..a127d110 --- /dev/null +++ b/UniTAS/Patcher/Patches/Harmony/UnityInit/RewiredPatch.cs @@ -0,0 +1,35 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.Reflection; +using HarmonyLib; +using UniTAS.Patcher.Interfaces.Patches.PatchTypes; +using UniTAS.Patcher.Utils; + +namespace UniTAS.Patcher.Patches.Harmony.UnityInit; + +[RawPatchUnityInit] +[SuppressMessage("ReSharper", "InconsistentNaming")] +[SuppressMessage("ReSharper", "UnusedMember.Local")] +[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")] +public class RewiredPatch +{ + [HarmonyPatch] + private static class InputManagerBaseAwake + { + private static MethodBase TargetMethod() + { + return AccessTools.Method("Rewired.InputManager_Base:Awake"); + } + + private static Exception Cleanup(MethodBase original, Exception ex) + { + return PatchHelper.CleanupIgnoreFail(original, ex); + } + + private static void Prefix(object __instance) + { + new Traverse(__instance).Field("_userData").Field("configVars").Field("alwaysUseUnityInput").SetValue(true); + StaticLogger.Log.LogInfo("applied fix to rewired input to fallback on unity input"); + } + } +} \ No newline at end of file