Files
Tarkov-UIFixes/Patches/EditBuildScreenPatch.cs
Tyfon 972045c793 Nit
2024-04-19 16:15:15 -07:00

64 lines
1.9 KiB
C#

using Aki.Reflection.Patching;
using EFT.UI;
using System;
using System.Reflection;
using System.Threading.Tasks;
namespace UIFixes
{
// Two patches are required for the edit preset screen - one to grab the value of moveForward from CloseScreenInterruption(), and one to use it.
// This is because BSG didn't think to pass the argument in to method_35
public class EditBuildScreenPatch
{
public static bool MoveForward;
public static void Enable()
{
new CloseScreenInterruptionPatch().Enable();
new ConfirmDiscardPatch().Enable();
}
public class CloseScreenInterruptionPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
Type type = typeof(EditBuildScreen.GClass3126);
return type.GetMethod("CloseScreenInterruption", BindingFlags.Public | BindingFlags.Instance);
}
[PatchPrefix]
private static void Prefix(bool moveForward)
{
MoveForward = moveForward;
}
}
public class ConfirmDiscardPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
Type type = typeof(EditBuildScreen);
return type.GetMethod("method_35", BindingFlags.Public | BindingFlags.Instance);
}
[PatchPrefix]
private static bool Prefix(ref Task<bool> __result)
{
if (MoveForward && Settings.WeaponPresetConfirmOnNavigate.Value)
{
return true;
}
if (!MoveForward && Settings.WeaponPresetConfirmOnClose.Value)
{
return true;
}
__result = Task.FromResult<bool>(true);
return false;
}
}
}
}