diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaCustomConverters.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaCustomConverters.cs index 357a52c59..ecae3a6cb 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaCustomConverters.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaCustomConverters.cs @@ -18,11 +18,9 @@ namespace Barotrauma RegisterAction(); - Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(Func), v => - { - var function = v.Function; - return (Func)((Fixture a, Vector2 b, Vector2 c, float d) => new LuaResult(function.Call(a, b, c, d)).Float()); - }); + RegisterFunc(); + RegisterFunc(); + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(LuaCsAction), v => (LuaCsAction)( args => GameMain.LuaCs.CallLuaFunction(v.Function, args) )); Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(LuaCsFunc), v => (LuaCsFunc)( args => new LuaResult(GameMain.LuaCs.CallLuaFunction(v.Function, args)) )); Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(LuaCsPatch), v => (LuaCsPatch)( (self, args) => new LuaResult(GameMain.LuaCs.CallLuaFunction(v.Function, self, args)) )); @@ -133,6 +131,12 @@ namespace Barotrauma var function = v.Function; return (Action)(p => GameMain.LuaCs.CallLuaFunction(function, p)); }); + + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.ClrFunction, typeof(Action), v => + { + var function = v.Function; + return (Action)(p => GameMain.LuaCs.CallLuaFunction(function, p)); + }); } public static void RegisterAction() @@ -142,6 +146,12 @@ namespace Barotrauma var function = v.Function; return (Action)((a1, a2) => GameMain.LuaCs.CallLuaFunction(function, a1, a2)); }); + + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.ClrFunction, typeof(Action), v => + { + var function = v.Function; + return (Action)((a1, a2) => GameMain.LuaCs.CallLuaFunction(function, a1, a2)); + }); } public static void RegisterAction() @@ -151,6 +161,57 @@ namespace Barotrauma var function = v.Function; return (Action)(() => GameMain.LuaCs.CallLuaFunction(function)); }); + + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.ClrFunction, typeof(Action), v => + { + var function = v.Function; + return (Action)(() => GameMain.LuaCs.CallLuaFunction(function)); + }); + } + + public static void RegisterFunc() + { + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(Func), v => + { + var function = v.Function; + return (Func)(() => function.Call().ToObject()); + }); + + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.ClrFunction, typeof(Func), v => + { + var function = v.Function; + return (Func)(() => function.Call().ToObject()); + }); + } + + public static void RegisterFunc() + { + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(Func), v => + { + var function = v.Function; + return (Func)((T1 a) => function.Call(a).ToObject()); + }); + + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.ClrFunction, typeof(Func), v => + { + var function = v.Function; + return (Func)((T1 a) => function.Call(a).ToObject()); + }); + } + + public static void RegisterFunc() + { + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(Func), v => + { + var function = v.Function; + return (Func)((T1 a, T2 b, T3 c, T4 d) => function.Call(a, b, c, d).ToObject()); + }); + + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(Func), v => + { + var function = v.Function; + return (Func)((T1 a, T2 b, T3 c, T4 d) => function.Call(a, b, c, d).ToObject()); + }); } }