diff --git a/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibClient.lua b/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibClient.lua index accbdf4e4..e292bcd44 100644 --- a/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibClient.lua +++ b/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibClient.lua @@ -27,6 +27,7 @@ defaultLib["BackgroundMusic"] = CreateStatic("Barotrauma.BackgroundMusic", true) defaultLib["GUISound"] = CreateStatic("Barotrauma.GUISound", true) defaultLib["DamageSound"] = CreateStatic("Barotrauma.DamageSound", true) +defaultLib["TextureLoader"] = CreateStatic("Barotrauma.TextureLoader") defaultLib["Sprite"] = CreateStatic("Barotrauma.Sprite", true) defaultLib["PlayerInput"] = CreateStatic("Barotrauma.PlayerInput", true) diff --git a/Barotrauma/BarotraumaShared/Lua/DefaultRegister/RegisterClient.lua b/Barotrauma/BarotraumaShared/Lua/DefaultRegister/RegisterClient.lua index 609510b70..81f70ff44 100644 --- a/Barotrauma/BarotraumaShared/Lua/DefaultRegister/RegisterClient.lua +++ b/Barotrauma/BarotraumaShared/Lua/DefaultRegister/RegisterClient.lua @@ -70,6 +70,7 @@ Register("EventInput.KeyEventArgs") Register("Microsoft.Xna.Framework.Input.Keys") Register("Microsoft.Xna.Framework.Input.KeyboardState") +RegisterBarotrauma("TextureLoader") RegisterBarotrauma("Sprite") RegisterBarotrauma("GUI") RegisterBarotrauma("GUIStyle") diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaConverters.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaConverters.cs index 74190eb7b..43bff1368 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaConverters.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaConverters.cs @@ -186,6 +186,31 @@ namespace Barotrauma converter: luaValue => luaValue.UserData.Object is LuaDouble v ? (double)v : throw new ScriptRuntimeException("use Double(value) to pass primitive type 'double' to C#")); + + RegisterOption(); + RegisterOption(); + RegisterOption(); + } + + private void RegisterOption() + { + Script.GlobalOptions.CustomConverters.SetClrToScriptCustomConversion(typeof(Option), (Script v, object obj) => + { + if (obj is Option option) + { + if (option.TryUnwrap(out T outValue)) + { + return UserData.Create(outValue); + } + } + + return null; + }); + + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.UserData, typeof(Option), v => + { + return Option.Some(v.ToObject()); + }); } private void RegisterAction()