diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsHook.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsHook.cs index 343a73856..e596135e7 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsHook.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsHook.cs @@ -17,12 +17,12 @@ public interface ILuaCsHook : ILuaCsShim T Call(string eventName, params object[] args); // Hook/Method Patching - string Patch(string identifier, string className, string methodName, string[] parameterTypes, LuaCsPatchFunc patch, EventService.HookMethodType hookType = EventService.HookMethodType.Before); - string Patch(string identifier, string className, string methodName, LuaCsPatchFunc patch, EventService.HookMethodType hookType = EventService.HookMethodType.Before); - string Patch(string className, string methodName, string[] parameterTypes, LuaCsPatchFunc patch, EventService.HookMethodType hookType = EventService.HookMethodType.Before); - string Patch(string className, string methodName, LuaCsPatchFunc patch, EventService.HookMethodType hookType = EventService.HookMethodType.Before); - bool RemovePatch(string identifier, string className, string methodName, string[] parameterTypes, EventService.HookMethodType hookType); - bool RemovePatch(string identifier, string className, string methodName, EventService.HookMethodType hookType); + string Patch(string identifier, string className, string methodName, string[] parameterTypes, LuaCsPatchFunc patch, HookMethodType hookType = HookMethodType.Before); + string Patch(string identifier, string className, string methodName, LuaCsPatchFunc patch, HookMethodType hookType = HookMethodType.Before); + string Patch(string className, string methodName, string[] parameterTypes, LuaCsPatchFunc patch, HookMethodType hookType = HookMethodType.Before); + string Patch(string className, string methodName, LuaCsPatchFunc patch, HookMethodType hookType = HookMethodType.Before); + bool RemovePatch(string identifier, string className, string methodName, string[] parameterTypes, HookMethodType hookType); + bool RemovePatch(string identifier, string className, string methodName, HookMethodType hookType); void HookMethod(string identifier, MethodBase method, LuaCsCompatPatchFunc patch, HookMethodType hookType = HookMethodType.Before, IAssemblyPlugin owner = null); diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs index 75fe54d4d..49c31e4cc 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs @@ -477,7 +477,7 @@ public class PluginManagementService : IAssemblyManagementService IEnumerable GetMetadataReferences() { #if !DEBUG - throw new NotImplementedException($"Needs to use publicized barotrauma assemblies."); + throw new NotImplementedException($"Needs to use publicized barotrauma assemblies and cache metadata."); #endif return Basic.Reference.Assemblies.Net80.References.All .Union(AppDomain.CurrentDomain.GetAssemblies() diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigService.cs index 205d8b98e..5ce1aff99 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigService.cs @@ -303,6 +303,7 @@ public sealed class ModConfigService : IModConfigService FriendlyName = IAssemblyLoaderService.InternalsAwareAssemblyName, IncompatiblePackages = ImmutableArray.Empty, RequiredPackages = ImmutableArray.Empty, + UseInternalAccessName = true, IsScript = true }); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPatcher.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPatcher.cs index 3f5f47cb0..f45c73e4e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPatcher.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPatcher.cs @@ -416,11 +416,6 @@ namespace Barotrauma.LuaCs.Services partial class EventService { - public enum HookMethodType - { - Before, After - } - private class LuaCsHookCallback { public string name; @@ -805,7 +800,7 @@ namespace Barotrauma.LuaCs.Services // If you need to debug this: // - use https://sharplab.io ; it's a very useful for resource for writing IL by hand. // - use il.NewMessage("") or il.WriteLine("") to see where the IL crashes at runtime. - private MethodInfo CreateDynamicHarmonyPatch(string identifier, MethodBase original, HookMethodType hookType) + private MethodInfo CreateDynamicHarmonyPatch(string identifier, MethodBase original, LuaCsHook.HookMethodType hookType) { var parameters = new List { @@ -840,9 +835,9 @@ namespace Barotrauma.LuaCs.Services var luaCsField = typeBuilder.DefineField(FIELD_LUACS, typeof(LuaCsSetup), FieldAttributes.Public | FieldAttributes.Static); - var methodName = hookType == HookMethodType.Before ? "HarmonyPrefix" : "HarmonyPostfix"; + var methodName = hookType == LuaCsHook.HookMethodType.Before ? "HarmonyPrefix" : "HarmonyPostfix"; var il = Emit.BuildMethod( - returnType: hookType == HookMethodType.Before ? typeof(bool) : typeof(void), + returnType: hookType == LuaCsHook.HookMethodType.Before ? typeof(bool) : typeof(void), parameterTypes: parameters.Select(x => x.HarmonyPatchParamType).ToArray(), type: typeBuilder, name: methodName, @@ -911,7 +906,7 @@ namespace Barotrauma.LuaCs.Services il.NewObject(typeof(ParameterTable), typeof(Dictionary)); il.StoreLocal(ptable); - if (hasReturnType && hookType == HookMethodType.After) + if (hasReturnType && hookType == LuaCsHook.HookMethodType.After) { // IL: ptable.OriginalReturnValue = __result; il.LoadLocal(ptable); @@ -924,7 +919,7 @@ namespace Barotrauma.LuaCs.Services var enumerator = il.DeclareLocal>("enumerator"); il.LoadLocal(patches); il.CallVirtual(typeof(PatchedMethod).GetMethod( - name: hookType == HookMethodType.Before + name: hookType == LuaCsHook.HookMethodType.Before ? nameof(PatchedMethod.GetPrefixEnumerator) : nameof(PatchedMethod.GetPostfixEnumerator), bindingAttr: BindingFlags.Public | BindingFlags.Instance)); @@ -1073,7 +1068,7 @@ namespace Barotrauma.LuaCs.Services il.EndExceptionBlock(exceptionBlock); // Only prefixes return a bool - if (hookType == HookMethodType.Before) + if (hookType == LuaCsHook.HookMethodType.Before) { il.LoadLocal(harmonyReturnValue); } @@ -1090,7 +1085,7 @@ namespace Barotrauma.LuaCs.Services return type.GetMethod(methodName, BindingFlags.Public | BindingFlags.Static); } - private string Patch(string identifier, MethodBase method, LuaCsPatchFunc patch, HookMethodType hookType = HookMethodType.Before) + private string Patch(string identifier, MethodBase method, LuaCsPatchFunc patch, LuaCsHook.HookMethodType hookType = LuaCsHook.HookMethodType.Before) { if (method == null) throw new ArgumentNullException(nameof(method)); if (patch == null) throw new ArgumentNullException(nameof(patch)); @@ -1102,13 +1097,13 @@ namespace Barotrauma.LuaCs.Services var patchKey = MethodKey.Create(method); if (!registeredPatches.TryGetValue(patchKey, out var methodPatches)) { - var harmonyPrefix = CreateDynamicHarmonyPatch(identifier, method, HookMethodType.Before); - var harmonyPostfix = CreateDynamicHarmonyPatch(identifier, method, HookMethodType.After); + var harmonyPrefix = CreateDynamicHarmonyPatch(identifier, method, LuaCsHook.HookMethodType.Before); + var harmonyPostfix = CreateDynamicHarmonyPatch(identifier, method, LuaCsHook.HookMethodType.After); harmony.Patch(method, prefix: new HarmonyMethod(harmonyPrefix), postfix: new HarmonyMethod(harmonyPostfix)); methodPatches = registeredPatches[patchKey] = new PatchedMethod(harmonyPrefix, harmonyPostfix); } - if (hookType == HookMethodType.Before) + if (hookType == LuaCsHook.HookMethodType.Before) { if (methodPatches.Prefixes.Remove(identifier)) { @@ -1121,7 +1116,7 @@ namespace Barotrauma.LuaCs.Services PatchFunc = patch, }); } - else if (hookType == HookMethodType.After) + else if (hookType == LuaCsHook.HookMethodType.After) { if (methodPatches.Postfixes.Remove(identifier)) { @@ -1138,31 +1133,31 @@ namespace Barotrauma.LuaCs.Services return identifier; } - public string Patch(string identifier, string className, string methodName, string[] parameterTypes, LuaCsPatchFunc patch, HookMethodType hookType = HookMethodType.Before) + public string Patch(string identifier, string className, string methodName, string[] parameterTypes, LuaCsPatchFunc patch, LuaCsHook.HookMethodType hookType = LuaCsHook.HookMethodType.Before) { var method = ResolveMethod(className, methodName, parameterTypes); return Patch(identifier, method, patch, hookType); } - public string Patch(string identifier, string className, string methodName, LuaCsPatchFunc patch, HookMethodType hookType = HookMethodType.Before) + public string Patch(string identifier, string className, string methodName, LuaCsPatchFunc patch, LuaCsHook.HookMethodType hookType = LuaCsHook.HookMethodType.Before) { var method = ResolveMethod(className, methodName, null); return Patch(identifier, method, patch, hookType); } - public string Patch(string className, string methodName, string[] parameterTypes, LuaCsPatchFunc patch, HookMethodType hookType = HookMethodType.Before) + public string Patch(string className, string methodName, string[] parameterTypes, LuaCsPatchFunc patch, LuaCsHook.HookMethodType hookType = LuaCsHook.HookMethodType.Before) { var method = ResolveMethod(className, methodName, parameterTypes); return Patch(null, method, patch, hookType); } - public string Patch(string className, string methodName, LuaCsPatchFunc patch, HookMethodType hookType = HookMethodType.Before) + public string Patch(string className, string methodName, LuaCsPatchFunc patch, LuaCsHook.HookMethodType hookType = LuaCsHook.HookMethodType.Before) { var method = ResolveMethod(className, methodName, null); return Patch(null, method, patch, hookType); } - private bool RemovePatch(string identifier, MethodBase method, HookMethodType hookType) + private bool RemovePatch(string identifier, MethodBase method, LuaCsHook.HookMethodType hookType) { if (identifier == null) throw new ArgumentNullException(nameof(identifier)); identifier = NormalizeIdentifier(identifier); @@ -1175,19 +1170,19 @@ namespace Barotrauma.LuaCs.Services return hookType switch { - HookMethodType.Before => methodPatches.Prefixes.Remove(identifier), - HookMethodType.After => methodPatches.Postfixes.Remove(identifier), - _ => throw new ArgumentException($"Invalid {nameof(HookMethodType)} enum value.", nameof(hookType)), + LuaCsHook.HookMethodType.Before => methodPatches.Prefixes.Remove(identifier), + LuaCsHook.HookMethodType.After => methodPatches.Postfixes.Remove(identifier), + _ => throw new ArgumentException($"Invalid {nameof(LuaCsHook.HookMethodType)} enum value.", nameof(hookType)), }; } - public bool RemovePatch(string identifier, string className, string methodName, string[] parameterTypes, HookMethodType hookType) + public bool RemovePatch(string identifier, string className, string methodName, string[] parameterTypes, LuaCsHook.HookMethodType hookType) { var method = ResolveMethod(className, methodName, parameterTypes); return RemovePatch(identifier, method, hookType); } - public bool RemovePatch(string identifier, string className, string methodName, HookMethodType hookType) + public bool RemovePatch(string identifier, string className, string methodName, LuaCsHook.HookMethodType hookType) { var method = ResolveMethod(className, methodName, null); return RemovePatch(identifier, method, hookType); diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPatcherCompat.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPatcherCompat.cs index be821e83f..8b0d93306 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPatcherCompat.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPatcherCompat.cs @@ -23,7 +23,7 @@ namespace Barotrauma.LuaCs.Services private Dictionary> compatHookPrefixMethods = new Dictionary>(); private Dictionary> compatHookPostfixMethods = new Dictionary>(); - private static void _hookLuaCsPatch(MethodBase __originalMethod, object[] __args, object __instance, out object result, HookMethodType hookType) + private static void _hookLuaCsPatch(MethodBase __originalMethod, object[] __args, object __instance, out object result, ILuaCsHook.HookMethodType hookType) { result = null; @@ -33,14 +33,14 @@ namespace Barotrauma.LuaCs.Services HashSet<(string, LuaCsCompatPatchFunc, IAssemblyPlugin)> methodSet = null; switch (hookType) { - case HookMethodType.Before: + case ILuaCsHook.HookMethodType.Before: instance.compatHookPrefixMethods.TryGetValue(funcAddr, out methodSet); break; - case HookMethodType.After: + case ILuaCsHook.HookMethodType.After: instance.compatHookPostfixMethods.TryGetValue(funcAddr, out methodSet); break; default: - throw new ArgumentException($"Invalid {nameof(HookMethodType)} enum value.", nameof(hookType)); + throw new ArgumentException($"Invalid {nameof(ILuaCsHook.HookMethodType)} enum value.", nameof(hookType)); } if (methodSet != null) @@ -98,16 +98,16 @@ namespace Barotrauma.LuaCs.Services private static bool HookLuaCsPatchPrefix(MethodBase __originalMethod, object[] __args, object __instance) { - _hookLuaCsPatch(__originalMethod, __args, __instance, out object result, HookMethodType.Before); + _hookLuaCsPatch(__originalMethod, __args, __instance, out object result, ILuaCsHook.HookMethodType.Before); return result == null; } private static void HookLuaCsPatchPostfix(MethodBase __originalMethod, object[] __args, object __instance) => - _hookLuaCsPatch(__originalMethod, __args, __instance, out object _, HookMethodType.After); + _hookLuaCsPatch(__originalMethod, __args, __instance, out object _, ILuaCsHook.HookMethodType.After); private static bool HookLuaCsPatchRetPrefix(MethodBase __originalMethod, object[] __args, ref object __result, object __instance) { - _hookLuaCsPatch(__originalMethod, __args, __instance, out object result, HookMethodType.Before); + _hookLuaCsPatch(__originalMethod, __args, __instance, out object result, ILuaCsHook.HookMethodType.Before); if (result != null) { __result = result; @@ -118,7 +118,7 @@ namespace Barotrauma.LuaCs.Services private static void HookLuaCsPatchRetPostfix(MethodBase __originalMethod, object[] __args, ref object __result, object __instance) { - _hookLuaCsPatch(__originalMethod, __args, __instance, out object result, HookMethodType.After); + _hookLuaCsPatch(__originalMethod, __args, __instance, out object result, ILuaCsHook.HookMethodType.After); if (result != null) __result = result; } @@ -130,10 +130,6 @@ namespace Barotrauma.LuaCs.Services // TODO: deprecate this public void HookMethod(string identifier, MethodBase method, LuaCsCompatPatchFunc patch, ILuaCsHook.HookMethodType hookType = ILuaCsHook.HookMethodType.Before, IAssemblyPlugin owner = null) - { - throw new NotImplementedException(); - } - public void HookMethod(string identifier, MethodBase method, LuaCsCompatPatchFunc patch, HookMethodType hookType = HookMethodType.Before, IAssemblyPlugin owner = null) { if (identifier == null || method == null || patch == null) { @@ -145,7 +141,7 @@ namespace Barotrauma.LuaCs.Services var funcAddr = ((long)method.MethodHandle.GetFunctionPointer()); var patches = Harmony.GetPatchInfo(method); - if (hookType == HookMethodType.Before) + if (hookType == ILuaCsHook.HookMethodType.Before) { if (method is MethodInfo mi && mi.ReturnType != typeof(void)) { @@ -177,7 +173,7 @@ namespace Barotrauma.LuaCs.Services } } - else if (hookType == HookMethodType.After) + else if (hookType == ILuaCsHook.HookMethodType.After) { if (method is MethodInfo mi && mi.ReturnType != typeof(void)) { @@ -209,7 +205,7 @@ namespace Barotrauma.LuaCs.Services } } } - protected void HookMethod(string identifier, string className, string methodName, string[] parameterNames, LuaCsCompatPatchFunc patch, HookMethodType hookMethodType = HookMethodType.Before) + protected void HookMethod(string identifier, string className, string methodName, string[] parameterNames, LuaCsCompatPatchFunc patch, ILuaCsHook.HookMethodType hookMethodType = ILuaCsHook.HookMethodType.Before) { var method = ResolveMethod(className, methodName, parameterNames); if (method == null) return; @@ -219,26 +215,26 @@ namespace Barotrauma.LuaCs.Services } HookMethod(identifier, method, patch, hookMethodType); } - protected void HookMethod(string identifier, string className, string methodName, LuaCsCompatPatchFunc patch, HookMethodType hookMethodType = HookMethodType.Before) => + protected void HookMethod(string identifier, string className, string methodName, LuaCsCompatPatchFunc patch, ILuaCsHook.HookMethodType hookMethodType = ILuaCsHook.HookMethodType.Before) => HookMethod(identifier, className, methodName, null, patch, hookMethodType); - protected void HookMethod(string className, string methodName, LuaCsCompatPatchFunc patch, HookMethodType hookMethodType = HookMethodType.Before) => + protected void HookMethod(string className, string methodName, LuaCsCompatPatchFunc patch, ILuaCsHook.HookMethodType hookMethodType = ILuaCsHook.HookMethodType.Before) => HookMethod("", className, methodName, null, patch, hookMethodType); - protected void HookMethod(string className, string methodName, string[] parameterNames, LuaCsCompatPatchFunc patch, HookMethodType hookMethodType = HookMethodType.Before) => + protected void HookMethod(string className, string methodName, string[] parameterNames, LuaCsCompatPatchFunc patch, ILuaCsHook.HookMethodType hookMethodType = ILuaCsHook.HookMethodType.Before) => HookMethod("", className, methodName, parameterNames, patch, hookMethodType); - public void UnhookMethod(string identifier, MethodBase method, HookMethodType hookType = HookMethodType.Before) + public void UnhookMethod(string identifier, MethodBase method, ILuaCsHook.HookMethodType hookType = ILuaCsHook.HookMethodType.Before) { var funcAddr = (long)method.MethodHandle.GetFunctionPointer(); Dictionary> methods; - if (hookType == HookMethodType.Before) methods = compatHookPrefixMethods; - else if (hookType == HookMethodType.After) methods = compatHookPostfixMethods; + if (hookType == ILuaCsHook.HookMethodType.Before) methods = compatHookPrefixMethods; + else if (hookType == ILuaCsHook.HookMethodType.After) methods = compatHookPostfixMethods; else throw null; if (methods.ContainsKey(funcAddr)) methods[funcAddr]?.RemoveWhere(t => t.Item1 == identifier); } - protected void UnhookMethod(string identifier, string className, string methodName, string[] parameterNames, HookMethodType hookType = HookMethodType.Before) + protected void UnhookMethod(string identifier, string className, string methodName, string[] parameterNames, ILuaCsHook.HookMethodType hookType = ILuaCsHook.HookMethodType.Before) { var method = ResolveMethod(className, methodName, parameterNames); if (method == null) return; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyLoaderService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyLoaderService.cs index c3dd6983a..9c113ed4b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyLoaderService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyLoaderService.cs @@ -11,6 +11,16 @@ using Microsoft.CodeAnalysis.CSharp; namespace Barotrauma.LuaCs; +[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] +public sealed class IgnoresAccessChecksToAttribute : Attribute +{ + public string AssemblyName { get; } + public IgnoresAccessChecksToAttribute(string assemblyName) + { + AssemblyName = assemblyName; + } +} + public interface IAssemblyLoaderService : IService { public interface IFactory : IService diff --git a/Barotrauma/BarotraumaTest/LuaCs/HookPatchHelpers.cs b/Barotrauma/BarotraumaTest/LuaCs/HookPatchHelpers.cs index 8aaeb45c0..213744534 100644 --- a/Barotrauma/BarotraumaTest/LuaCs/HookPatchHelpers.cs +++ b/Barotrauma/BarotraumaTest/LuaCs/HookPatchHelpers.cs @@ -1,5 +1,5 @@ extern alias Client; - +extern alias Server; using Client::Barotrauma.LuaCs.Services; using Client::Barotrauma; using MoonSharp.Interpreter; @@ -8,6 +8,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Text; using System.Threading; +using Server::Barotrauma.LuaCs.Services.Compatibility; using Xunit; namespace TestProject.LuaCs @@ -64,14 +65,14 @@ namespace TestProject.LuaCs string methodName, string[]? parameters, string function, - EventService.HookMethodType patchType) + ILuaCsHook.HookMethodType patchType) { var args = BuildHookPatchArgsList(patchId, className, methodName, parameters); args.Add(function); args.Add(patchType switch { - EventService.HookMethodType.Before => "Hook.HookMethodType.Before", - EventService.HookMethodType.After => "Hook.HookMethodType.After", + ILuaCsHook.HookMethodType.Before => "Hook.HookMethodType.Before", + ILuaCsHook.HookMethodType.After => "Hook.HookMethodType.After", _ => throw new NotImplementedException(), }); throw new NotImplementedException(); @@ -84,13 +85,13 @@ namespace TestProject.LuaCs string className, string methodName, string[]? parameters, - EventService.HookMethodType patchType) + ILuaCsHook.HookMethodType patchType) { var args = BuildHookPatchArgsList(patchId, className, methodName, parameters); args.Add(patchType switch { - EventService.HookMethodType.Before => "Hook.HookMethodType.Before", - EventService.HookMethodType.After => "Hook.HookMethodType.After", + ILuaCsHook.HookMethodType.Before => "Hook.HookMethodType.Before", + ILuaCsHook.HookMethodType.After => "Hook.HookMethodType.After", _ => throw new NotImplementedException(), }); throw new NotImplementedException(); @@ -104,7 +105,7 @@ namespace TestProject.LuaCs function(instance, ptable) {body} end - ", EventService.HookMethodType.Before); + ", ILuaCsHook.HookMethodType.Before); Assert.Equal(DataType.String, returnValue.Type); return new(returnValue.String, () => luaCs.RemovePrefix(returnValue.String, methodName, parameters)); } @@ -116,7 +117,7 @@ namespace TestProject.LuaCs function(instance, ptable) {body} end - ", EventService.HookMethodType.After); + ", ILuaCsHook.HookMethodType.After); Assert.Equal(DataType.String, returnValue.Type); return new(returnValue.String, () => luaCs.RemovePostfix(returnValue.String, methodName, parameters)); } @@ -124,7 +125,7 @@ namespace TestProject.LuaCs public static bool RemovePrefix(this LuaCsSetup luaCs, string patchId, string methodName, string[]? parameters = null) { var className = typeof(T).FullName!; - var returnValue = luaCs.DoHookRemovePatch(patchId, className, methodName, parameters, EventService.HookMethodType.Before); + var returnValue = luaCs.DoHookRemovePatch(patchId, className, methodName, parameters, ILuaCsHook.HookMethodType.Before); Assert.Equal(DataType.Boolean, returnValue.Type); return returnValue.Boolean; } @@ -132,7 +133,7 @@ namespace TestProject.LuaCs public static bool RemovePostfix(this LuaCsSetup luaCs, string patchId, string methodName, string[]? parameters = null) { var className = typeof(T).FullName!; - var returnValue = luaCs.DoHookRemovePatch(patchId, className, methodName, parameters, EventService.HookMethodType.After); + var returnValue = luaCs.DoHookRemovePatch(patchId, className, methodName, parameters, ILuaCsHook.HookMethodType.After); Assert.Equal(DataType.Boolean, returnValue.Type); return returnValue.Boolean; }