diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs index d761f0b59..d0b97c785 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs @@ -368,6 +368,41 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService, UserData.RegisterType(typeof(INetworkingService)); UserData.RegisterType(typeof(ILuaConfigService)); + UserData.RegisterType(typeof(ISettingBase)); + + Type[] settingBaseTypes = [ + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingBase), + typeof(ISettingRangeBase) + ]; + + Table settingsTable = new Table(_script); + + foreach (Type type in settingBaseTypes) + { + UserData.RegisterType(type); + + settingsTable[type.GetGenericArguments()[0].Name] = UserData.CreateStatic(type); + } + + _script.Globals["Settings"] = settingsTable; + + UserData.RegisterType(typeof(ISettingRangeBase)); +#if CLIENT + UserData.RegisterType(typeof(ISettingControl)); +#endif + new LuaConverters(this).RegisterLuaConverters(); var luaRequire = new LuaRequire(_script); diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs index 26a9afbf9..69107eb60 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs @@ -83,27 +83,6 @@ public class DefaultLuaRegistrar : IDefaultLuaRegistrar _userDataService.RegisterType(type.FullName); } - _userDataService.RegisterType(typeof(IConfigService).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingBase).FullName); - _userDataService.RegisterType(typeof(ISettingRangeBase).FullName); - _userDataService.RegisterType(typeof(ISettingRangeBase).FullName); -#if CLIENT - _userDataService.RegisterType(typeof(ISettingControl).FullName); -#endif - _userDataService.RegisterType("Barotrauma.LuaSByte"); _userDataService.RegisterType("Barotrauma.LuaByte"); _userDataService.RegisterType("Barotrauma.LuaInt16");