Expose all settings in Lua

This commit is contained in:
Evil Factory
2026-04-08 18:29:07 -03:00
parent c882b0bb45
commit eeeb3d9db3
2 changed files with 35 additions and 21 deletions

View File

@@ -368,6 +368,41 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService,
UserData.RegisterType(typeof(INetworkingService));
UserData.RegisterType(typeof(ILuaConfigService));
UserData.RegisterType(typeof(ISettingBase));
Type[] settingBaseTypes = [
typeof(ISettingBase<bool>),
typeof(ISettingBase<string>),
typeof(ISettingBase<byte>),
typeof(ISettingBase<sbyte>),
typeof(ISettingBase<ushort>),
typeof(ISettingBase<short>),
typeof(ISettingBase<char>),
typeof(ISettingBase<uint>),
typeof(ISettingBase<int>),
typeof(ISettingBase<ulong>),
typeof(ISettingBase<long>),
typeof(ISettingBase<float>),
typeof(ISettingBase<double>),
typeof(ISettingRangeBase<float>)
];
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<int>));
#if CLIENT
UserData.RegisterType(typeof(ISettingControl));
#endif
new LuaConverters(this).RegisterLuaConverters();
var luaRequire = new LuaRequire(_script);

View File

@@ -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<bool>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<string>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<byte>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<sbyte>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<ushort>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<short>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<char>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<uint>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<int>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<ulong>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<long>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<float>).FullName);
_userDataService.RegisterType(typeof(ISettingBase<double>).FullName);
_userDataService.RegisterType(typeof(ISettingRangeBase<float>).FullName);
_userDataService.RegisterType(typeof(ISettingRangeBase<int>).FullName);
#if CLIENT
_userDataService.RegisterType(typeof(ISettingControl).FullName);
#endif
_userDataService.RegisterType("Barotrauma.LuaSByte");
_userDataService.RegisterType("Barotrauma.LuaByte");
_userDataService.RegisterType("Barotrauma.LuaInt16");