Files
undead-universal-patch-il2cpp/Patches/Video/VideoTamperPatch.cs

63 lines
1.8 KiB
C#

using System.Reflection;
using System.Text.Json;
using HarmonyLib;
using undead_universal_patch_il2cpp.Core;
using undead_universal_patch_il2cpp.Core.Config;
namespace undead_universal_patch_il2cpp.Patches.Video;
[HarmonyPatch]
public class VideoTamperPatch
{
public static DediConfig<BaseOptionConfig> config = new("VideoTamperPatchConfig", JsonSerializer.Serialize(
new BaseOptionConfig
{
Enabled = false
}
), null);
static PatchTypesResult patchTypesResult = Util.PreparePatchTypes(
"Video anti-tamper hash disabler patch",
"RecRoom.Core.Cinematics.CinematicVideoPlayer",
"Start"
);
static bool Prepare()
{
if (config.Get().Enabled) return patchTypesResult.Success;
else return false;
}
static MethodBase TargetMethod() => patchTypesResult.Method;
static void Prefix(ref object __instance)
{
PropertyInfo useProp = __instance.GetType().GetRuntimeProperty("useAntiTamperHash");
if (useProp == null)
{
UniversalPatchPlugin.Log.LogError("VideoTamperPatch prefix: useAntiTamperHash was not found!");
return;
}
useProp.SetValue(__instance, false);
}
static void Postfix(ref object __instance)
{
PropertyInfo autoProp = __instance.GetType().GetRuntimeProperty("autoPlay");
if (autoProp == null)
{
UniversalPatchPlugin.Log.LogError("VideoTamperPatch postfix: autoPlay was not found!");
return;
}
MethodInfo playMethod = __instance.GetType().GetMethod("Play");
if (playMethod == null)
{
UniversalPatchPlugin.Log.LogError("VideoTamperPatch postfix: playMethod was not found!");
return;
}
if ((bool)autoProp.GetValue(__instance)) playMethod.Invoke(__instance, []);
}
}