Removing references to generated class ids, sometimes painfully

This commit is contained in:
Tyfon
2024-04-20 01:52:48 -07:00
parent 703f38563d
commit 5e7a71769e
2 changed files with 15 additions and 9 deletions

View File

@@ -8,30 +8,35 @@ using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using EFT.InputSystem;
using Aki.Reflection.Utils;
namespace UIFixes
{
public class WeaponBindingPatch : ModulePatch
{
private static Type ControlSettingsClass;
private static MethodInfo GetKeyNameMethod;
protected override MethodBase GetTargetMethod()
{
Type type = typeof(GClass960);
return type.GetMethod("GetBoundItemNames", BindingFlags.Public | BindingFlags.Instance);
ControlSettingsClass = PatchConstants.EftTypes.Single(x => x.GetMethod("GetBoundItemNames") != null); // GClass960
GetKeyNameMethod = ControlSettingsClass.GetMethod("GetKeyName");
return ControlSettingsClass.GetMethod("GetBoundItemNames", BindingFlags.Public | BindingFlags.Instance);
}
[PatchPostfix]
private static void Postfix(GClass960 __instance, EBoundItem boundItem, ref string __result)
private static void Postfix(object __instance, EBoundItem boundItem, ref string __result)
{
switch(boundItem)
{
case EBoundItem.Item1:
__result = __instance.GetKeyName(EGameKey.SecondaryWeapon);
__result = GetKeyNameMethod.Invoke(__instance, [EGameKey.SecondaryWeapon]) as string; //__instance.GetKeyName(EGameKey.SecondaryWeapon);
break;
case EBoundItem.Item2:
__result = __instance.GetKeyName(EGameKey.PrimaryWeaponFirst);
__result = GetKeyNameMethod.Invoke(__instance, [EGameKey.PrimaryWeaponFirst]) as string; //__instance.GetKeyName(EGameKey.PrimaryWeaponFirst);
break;
case EBoundItem.Item3:
__result = __instance.GetKeyName(EGameKey.PrimaryWeaponSecond);
__result = GetKeyNameMethod.Invoke(__instance, [EGameKey.PrimaryWeaponSecond]) as string; //__instance.GetKeyName(EGameKey.PrimaryWeaponSecond);
break;
}
}