GameMain.LuaCs is no more

This commit is contained in:
Evil Factory
2026-02-28 16:05:20 -03:00
parent c676233dfd
commit 8e8b8eb8aa
35 changed files with 99 additions and 96 deletions
@@ -22,8 +22,16 @@ namespace Barotrauma
partial class LuaCsSetup : IDisposable, IEventScreenSelected, IEventEnabledPackageListChanged,
IEventReloadAllPackages
{
public LuaCsSetup()
private static LuaCsSetup _luaCsSetup;
public static LuaCsSetup Instance => _luaCsSetup ??= new LuaCsSetup();
private LuaCsSetup()
{
if (_luaCsSetup != null)
{
throw new Exception("Tried to create another LuaCsSetup instance");
}
// == startup
_servicesProvider = SetupServicesProvider();
_runStateMachine = SetupStateMachine();
@@ -432,6 +440,8 @@ namespace Barotrauma
Console.WriteLine(e);
throw;
}
_luaCsSetup = null;
GC.SuppressFinalize(this);
}
@@ -74,27 +74,27 @@ namespace Barotrauma.LuaCs
public static void PrintMessage(string s)
{
#if SERVER
GameMain.LuaCs.Logger.LogMessage($"{s}");
LuaCsSetup.Instance.Logger.LogMessage($"{s}");
#else
GameMain.LuaCs.Logger.LogMessage($"{s}");
LuaCsSetup.Instance.Logger.LogMessage($"{s}");
#endif
}
public static void PrintWarning(string s)
{
#if SERVER
GameMain.LuaCs.Logger.Log($"{s}", Color.Yellow);
LuaCsSetup.Instance.Logger.Log($"{s}", Color.Yellow);
#else
GameMain.LuaCs.Logger.Log($"{s}", Color.Yellow);
LuaCsSetup.Instance.Logger.Log($"{s}", Color.Yellow);
#endif
}
public static void PrintError(string s)
{
#if SERVER
GameMain.LuaCs.Logger.LogError($"{s}");
LuaCsSetup.Instance.Logger.LogError($"{s}");
#else
GameMain.LuaCs.Logger.LogError($"{s}");
LuaCsSetup.Instance.Logger.LogError($"{s}");
#endif
}
}
@@ -48,7 +48,7 @@ namespace Barotrauma
}
catch (Exception e)
{
GameMain.LuaCs.Logger.HandleException(e);
LuaCsSetup.Instance.Logger.HandleException(e);
}
IsDisposed = true;
}
@@ -60,7 +60,7 @@ public partial class LoggerService : ILoggerService
if (!_isInsideLogCall)
{
_isInsideLogCall = true;
GameMain.LuaCs?.EventService.PublishEvent<IEventServerLog>(x => x.OnServerLog(logMessage, log.MessageType));
LuaCsSetup.Instance?.EventService.PublishEvent<IEventServerLog>(x => x.OnServerLog(logMessage, log.MessageType));
_isInsideLogCall = false;
}
}
@@ -12,13 +12,13 @@ public sealed class LuaCsInfoProvider : ILuaCsInfoProvider
}
public bool IsDisposed => false;
public bool IsCsEnabled => GameMain.LuaCs.IsCsEnabled;
public bool DisableErrorGUIOverlay => GameMain.LuaCs.DisableErrorGUIOverlay;
public bool HideUserNamesInLogs => GameMain.LuaCs.HideUserNamesInLogs;
public ulong LuaForBarotraumaSteamId => GameMain.LuaCs.LuaForBarotraumaSteamId;
public bool RestrictMessageSize => GameMain.LuaCs.RestrictMessageSize;
public string LocalDataSavePath => GameMain.LuaCs.LocalDataSavePath;
public RunState CurrentRunState => GameMain.LuaCs.CurrentRunState;
public bool IsCsEnabled => LuaCsSetup.Instance.IsCsEnabled;
public bool DisableErrorGUIOverlay => LuaCsSetup.Instance.DisableErrorGUIOverlay;
public bool HideUserNamesInLogs => LuaCsSetup.Instance.HideUserNamesInLogs;
public ulong LuaForBarotraumaSteamId => LuaCsSetup.Instance.LuaForBarotraumaSteamId;
public bool RestrictMessageSize => LuaCsSetup.Instance.RestrictMessageSize;
public string LocalDataSavePath => LuaCsSetup.Instance.LocalDataSavePath;
public RunState CurrentRunState => LuaCsSetup.Instance.CurrentRunState;
public ContentPackage LuaCsForBarotraumaPackage
{
get
@@ -90,7 +90,7 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService
{
commands.RegisterCommand("cl_reloadlua|cl_reloadcs|cl_reloadluacs", "Re-initializes the LuaCs environment.", (string[] args) =>
{
GameMain.LuaCs.EventService.PublishEvent<IEventReloadAllPackages>(sub => sub.OnReloadAllPackages());
LuaCsSetup.Instance.EventService.PublishEvent<IEventReloadAllPackages>(sub => sub.OnReloadAllPackages());
});
commands.RegisterCommand("cl_toggleluadebug", "Toggles the MoonSharp Debug Server.", (string[] args) =>
@@ -59,7 +59,7 @@ namespace Barotrauma
{
public object GetComponentString(string component)
{
Type type = GameMain.LuaCs.PluginManagementService.GetType("Barotrauma.Items.Components." + component);
Type type = LuaCsSetup.Instance.PluginManagementService.GetType("Barotrauma.Items.Components." + component);
if (type == null)
{
@@ -17,41 +17,41 @@ namespace Barotrauma
{
public static void HandleException(Exception ex, LuaCsMessageOrigin origin)
{
GameMain.LuaCs.Logger.HandleException(ex);
LuaCsSetup.Instance.Logger.HandleException(ex);
}
public static void LogError(string message, LuaCsMessageOrigin origin)
{
GameMain.LuaCs.Logger.LogError(message);
LuaCsSetup.Instance.Logger.LogError(message);
}
public static void LogError(string message)
{
GameMain.LuaCs.Logger.LogError(message);
LuaCsSetup.Instance.Logger.LogError(message);
}
public static void LogMessage(string message, Color? serverColor = null, Color? clientColor = null)
{
GameMain.LuaCs.Logger.LogMessage(message, serverColor, clientColor);
LuaCsSetup.Instance.Logger.LogMessage(message, serverColor, clientColor);
}
public static void Log(string message, Color? color = null, ServerLog.MessageType messageType = ServerLog.MessageType.ServerMessage)
{
GameMain.LuaCs.Logger.Log(message, color, messageType);
LuaCsSetup.Instance.Logger.Log(message, color, messageType);
}
}
partial class LuaCsSetup
{
// Compatibility with cs mods that use this method.
public static void PrintLuaError(object message) => GameMain.LuaCs.Logger.LogError($"{message}");
public static void PrintCsError(object message) => GameMain.LuaCs.Logger.LogError($"{message}");
public static void PrintGenericError(object message) => GameMain.LuaCs.Logger.LogError($"{message}");
public static void PrintLuaError(object message) => LuaCsSetup.Instance.Logger.LogError($"{message}");
public static void PrintCsError(object message) => LuaCsSetup.Instance.Logger.LogError($"{message}");
public static void PrintGenericError(object message) => LuaCsSetup.Instance.Logger.LogError($"{message}");
internal void PrintMessage(object message) => GameMain.LuaCs.Logger.LogMessage($"{message}");
internal void PrintMessage(object message) => LuaCsSetup.Instance.Logger.LogMessage($"{message}");
public static void PrintCsMessage(object message) => GameMain.LuaCs.Logger.LogMessage($"{message}");
public static void PrintCsMessage(object message) => LuaCsSetup.Instance.Logger.LogMessage($"{message}");
internal void HandleException(Exception ex, LuaCsMessageOrigin origin) => GameMain.LuaCs.Logger.HandleException(ex);
internal void HandleException(Exception ex, LuaCsMessageOrigin origin) => LuaCsSetup.Instance.Logger.HandleException(ex);
}
}
@@ -60,7 +60,7 @@ namespace Barotrauma
foreach (var package in ContentPackageManager.AllPackages)
{
if (package.UgcId.ValueEquals(new SteamWorkshopId(GameMain.LuaCs.LuaForBarotraumaSteamId))
if (package.UgcId.ValueEquals(new SteamWorkshopId(LuaCsSetup.Instance.LuaForBarotraumaSteamId))
&& pathStartsWith(getFullPath(package.Path)))
{
return false;
@@ -294,7 +294,7 @@ namespace Barotrauma.LuaCs
private static MethodBase ResolveMethod(string className, string methodName, string[] parameters)
{
var classType = GameMain.LuaCs.PluginManagementService.GetType(className);
var classType = LuaCsSetup.Instance.PluginManagementService.GetType(className);
if (classType == null) throw new ScriptRuntimeException($"invalid class name '{className}'");
const BindingFlags BINDING_FLAGS = BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
@@ -309,7 +309,7 @@ namespace Barotrauma.LuaCs
for (int i = 0; i < parameters.Length; i++)
{
Type type = GameMain.LuaCs.PluginManagementService.GetType(parameters[i]);
Type type = LuaCsSetup.Instance.PluginManagementService.GetType(parameters[i]);
if (type == null)
{
throw new ScriptRuntimeException($"invalid parameter type '{parameters[i]}'");
@@ -670,7 +670,7 @@ namespace Barotrauma.LuaCs
}
var type = typeBuilder.CreateType();
type.GetField(FIELD_LUACS, BindingFlags.Public | BindingFlags.Static).SetValue(null, GameMain.LuaCs);
type.GetField(FIELD_LUACS, BindingFlags.Public | BindingFlags.Static).SetValue(null, LuaCsSetup.Instance);
return type.GetMethod(methodName, BindingFlags.Public | BindingFlags.Static);
}