0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 09:50:43 -05:00
2023-03-03 18:52:31 +00:00

45 lines
1.3 KiB
C#

using Aki.Reflection.Patching;
using Aki.Reflection.Utils;
using EFT.UI.SessionEnd;
using System.Linq;
using System.Reflection;
namespace Aki.SinglePlayer.Patches.Progression
{
public class ExperienceGainPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
var desiredType = typeof(SessionResultExperienceCount);
var desiredMethod = desiredType.GetMethods(PatchConstants.PrivateFlags).FirstOrDefault(IsTargetMethod);
Logger.LogDebug($"{this.GetType().Name} Type: {desiredType?.Name}");
Logger.LogDebug($"{this.GetType().Name} Method: {desiredMethod?.Name}");
return desiredMethod;
}
private static bool IsTargetMethod(MethodInfo mi)
{
var parameters = mi.GetParameters();
return (parameters.Length == 3
&& parameters[0].Name == "profile"
&& parameters[1].Name == "isOnline"
&& parameters[2].Name == "exitStatus"
&& parameters[1].ParameterType == typeof(bool));
}
[PatchPrefix]
private static void PatchPrefix(ref bool isOnline)
{
isOnline = false;
}
[PatchPostfix]
private static void PatchPostfix(ref bool isOnline)
{
isOnline = true;
}
}
}