From eeeb3d9db3095382d415baafe8038decc3af9cee Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Wed, 8 Apr 2026 18:29:07 -0300 Subject: [PATCH] Expose all settings in Lua --- .../_Services/LuaScriptManagementService.cs | 35 +++++++++++++++++++ .../_Services/_Lua/DefaultLuaRegistrar.cs | 21 ----------- 2 files changed, 35 insertions(+), 21 deletions(-) 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");