using System.Collections.Generic;
using System.Reflection;
using HarmonyLib;
using NitroxModel.Helper;
using NitroxPatcher.PatternMatching;
using UnityEngine;
using static System.Reflection.Emit.OpCodes;
namespace NitroxPatcher.Patches.Dynamic;
///
/// Keeps DevConsole disabled when enter is pressed.
///
public sealed partial class DevConsole_Update_Patch : NitroxPatch, IDynamicPatch
{
private static readonly InstructionsPattern devConsoleSetStateTruePattern = new()
{
Reflect.Method(() => Input.GetKeyDown(default(KeyCode))),
Brfalse,
Ldarg_0,
Ldfld,
Brtrue,
Ldarg_0,
{ Ldc_I4_1, "ConsoleEnableFlag" },
Reflect.Method((DevConsole t) => t.SetState(default(bool)))
};
public static readonly MethodInfo TARGET_METHOD = Reflect.Method((DevConsole t) => t.Update());
public static IEnumerable Transpiler(MethodBase original, IEnumerable instructions)
{
return instructions.ChangeAtMarker(devConsoleSetStateTruePattern, "ConsoleEnableFlag", i => i.opcode = Ldc_I4_0);
}
}