// using System; // using System.Collections; // using System.Linq; // using System.Reflection; // using Aki.Reflection.Patching; // using Aki.Reflection.Utils; // using EFT; // using UnityEngine; // using System.Threading.Tasks; // using EFT.Interactive; // // namespace CWX_LockPicking // { // public class LockPickerMenuPatch : ModulePatch // { // // TODO: Make Version Agnostic // private static Type playerActionClass; // GClass1726 - smethod_9 on this class // private static Type menuClass; // GClass2804 // private static Type menuItemClass; // GClass2803 // // protected override MethodBase GetTargetMethod() // { // return typeof(GClass1726).GetMethod("smethod_9", BindingFlags.Static | BindingFlags.NonPublic); // } // // [PatchPostfix] // public static void PatchPostFix(ref GClass2804 __result, GamePlayerOwner owner, Door door) // { // // always do this to get rid of the useless interactions // __result.Actions.RemoveAll( // x => x.Name == "Bang & clear" || x.Name == "Flash & clear" || x.Name == "Move in"); // // // make sure its a locked and a door that can be unlocked // if (door.DoorState != EDoorState.Locked || door.KeyId == null || door.KeyId == "") return; // // // add action to unlock door - currently no animation // __result.Actions.Add(new GClass2803 // { // Name = "LockPicking", // Action = () => { door.DoorState = EDoorState.Shut; }, // Disabled = false // }); // } // } // } // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // public class TestLock : MonoBehaviour // { // private string _BundlePath = "BepInEx/plugins/CWX/Test/lockpick.bundle"; // public AssetBundle assetBundle; // public async Task LoadLock() // { // var bundleLoadRequest = AssetBundle.LoadFromFileAsync(_BundlePath); // // while (!bundleLoadRequest.isDone) // await Task.Yield(); // // assetBundle = bundleLoadRequest.assetBundle; // // var assetLoadRequest = assetBundle.LoadAllAssetsAsync(); // // while (!assetLoadRequest.isDone) // await Task.Yield(); // // var requestedGo = assetLoadRequest.allAssets[0] as GameObject; // // return requestedGo; // } // // public async void Init() // { // Instantiate(await LoadLock(), new Vector3(0, 0, 0), Quaternion.Euler(new Vector3(0, 0, 0))); // } // } // }