From 5de8d0293fe333bb194bd223402482387fc92d6e Mon Sep 17 00:00:00 2001 From: EvilFactory Date: Tue, 25 Apr 2023 21:27:11 -0300 Subject: [PATCH] Registered MathUtils and XMLExtensions as extension types, moved GetType to a better place --- .../Lua/DefaultLib/LibClient.lua | 2 ++ .../LuaCs/Lua/LuaClasses/LuaUserData.cs | 30 +--------------- .../SharedSource/LuaCs/LuaCsSetup.cs | 34 +++++++++++++++++++ 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibClient.lua b/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibClient.lua index 707232181..0ddf54e15 100644 --- a/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibClient.lua +++ b/Barotrauma/BarotraumaShared/Lua/DefaultLib/LibClient.lua @@ -22,6 +22,8 @@ sounds.HighShelfFilter = CreateStatic("Barotrauma.Sounds.HighShelfFilter") sounds.PeakFilter = CreateStatic("Barotrauma.Sounds.PeakFilter") defaultLib["Sounds"] = sounds +defaultLib["SpriteEffects"] = CreateStatic("Microsoft.Xna.Framework.Graphics.SpriteEffects") + defaultLib["SoundPlayer"] = CreateStatic("Barotrauma.SoundPlayer") defaultLib["SoundPrefab"] = CreateStatic("Barotrauma.SoundPrefab", true) defaultLib["BackgroundMusic"] = CreateStatic("Barotrauma.BackgroundMusic", true) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaClasses/LuaUserData.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaClasses/LuaUserData.cs index 4d6cb2b69..8ed35e2d4 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaClasses/LuaUserData.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Lua/LuaClasses/LuaUserData.cs @@ -9,35 +9,7 @@ namespace Barotrauma { partial class LuaUserData { - public static Type GetType(string typeName) - { - if (typeName == null || typeName.Length == 0) { return null; } - - var byRef = false; - if (typeName.StartsWith("out ") || typeName.StartsWith("ref ")) - { - typeName = typeName.Remove(0, 4); - byRef = true; - } - - var type = Type.GetType(typeName); - if (type != null) { return byRef ? type.MakeByRefType() : type; } - foreach (var a in AppDomain.CurrentDomain.GetAssemblies()) - { - if (CsScriptBase.LoadedAssemblyName.Contains(a.GetName().Name)) - { - var attrs = a.GetCustomAttributes(); - var revision = attrs.FirstOrDefault(attr => attr.Key == "Revision")?.Value; - if (revision != null && int.Parse(revision) != (int)CsScriptBase.Revision[a.GetName().Name]) { continue; } - } - type = a.GetType(typeName); - if (type != null) - { - return byRef ? type.MakeByRefType() : type; - } - } - return null; - } + public static Type GetType(string typeName) => LuaCsSetup.GetType(typeName); public static IUserDataDescriptor RegisterType(string typeName) { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs index c8b211d8a..968f11d30 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs @@ -8,6 +8,7 @@ using System.Threading; using LuaCsCompatPatchFunc = Barotrauma.LuaCsPatch; using System.Diagnostics; using MoonSharp.VsCodeDebugger; +using System.Reflection; [assembly: InternalsVisibleTo(Barotrauma.CsScriptBase.CsScriptAssembly, AllInternalsVisible = true)] namespace Barotrauma @@ -96,6 +97,36 @@ namespace Barotrauma } } + public static Type GetType(string typeName, bool throwOnError = false, bool ignoreCase = false) + { + if (typeName == null || typeName.Length == 0) { return null; } + + var byRef = false; + if (typeName.StartsWith("out ") || typeName.StartsWith("ref ")) + { + typeName = typeName.Remove(0, 4); + byRef = true; + } + + var type = Type.GetType(typeName, throwOnError, ignoreCase); + if (type != null) { return byRef ? type.MakeByRefType() : type; } + foreach (var a in AppDomain.CurrentDomain.GetAssemblies()) + { + if (CsScriptBase.LoadedAssemblyName.Contains(a.GetName().Name)) + { + var attrs = a.GetCustomAttributes(); + var revision = attrs.FirstOrDefault(attr => attr.Key == "Revision")?.Value; + if (revision != null && int.Parse(revision) != (int)CsScriptBase.Revision[a.GetName().Name]) { continue; } + } + type = a.GetType(typeName, throwOnError, ignoreCase); + if (type != null) + { + return byRef ? type.MakeByRefType() : type; + } + } + return null; + } + public void ToggleDebugger(int port = 41912) { if (!GameMain.LuaCs.DebugServer.IsStarted) @@ -341,6 +372,9 @@ namespace Barotrauma UserData.RegisterType(); UserData.RegisterType(); + UserData.RegisterExtensionType(typeof(MathUtils)); + UserData.RegisterExtensionType(typeof(XMLExtensions)); + Lua.Globals["printerror"] = (DynValue o) => { LuaCsLogger.LogError(o.ToString(), LuaCsMessageOrigin.LuaMod); }; Lua.Globals["setmodulepaths"] = (Action)SetModulePaths;