diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptBase.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptBase.cs index 921927678..d3e518247 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptBase.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptBase.cs @@ -16,6 +16,8 @@ namespace Barotrauma { class CsScriptBase : AssemblyLoadContext { + public static readonly List PreprocessingSymbols = new List(); + public const string NET_ONE_TIME_SCRIPT_ASSEMBLY = "NetOneTimeScriptAssembly"; public const string NET_SCRIPT_ASSEMBLY = "NetScriptAssembly"; @@ -27,6 +29,15 @@ namespace Barotrauma public CsScriptBase() : base(isCollectible: true) { } + static CsScriptBase() + { +#if SERVER + PreprocessingSymbols.Add("SERVER"); +#else + PreprocessingSymbols.Add("CLIENT"); +#endif + } + public static SyntaxTree AssemblyInfoSyntaxTree(string asmName = null) { Revision[asmName] = (int)Revision[asmName] + 1; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptLoader.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptLoader.cs index df2e9114d..a6893a251 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptLoader.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptLoader.cs @@ -69,7 +69,7 @@ namespace Barotrauma { foreach (var file in src) { - var tree = SyntaxFactory.ParseSyntaxTree(File.ReadAllText(file), CSharpParseOptions.Default, file); + var tree = SyntaxFactory.ParseSyntaxTree(File.ReadAllText(file), CSharpParseOptions.Default.WithPreprocessorSymbols(PreprocessingSymbols), file); var error = CsScriptFilter.FilterSyntaxTree(tree as CSharpSyntaxTree); // Check file content for prohibited stuff if (error != null) throw new Exception(error); diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptRunner.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptRunner.cs index 44f17be58..069a0bf49 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptRunner.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/CsScriptRunner.cs @@ -55,7 +55,7 @@ namespace Barotrauma try { code = ToOneTimeScript(code); - var syntaxTree = SyntaxFactory.ParseSyntaxTree(code, CSharpParseOptions.Default); + var syntaxTree = SyntaxFactory.ParseSyntaxTree(code, CSharpParseOptions.Default.WithPreprocessorSymbols(PreprocessingSymbols)); var compilation = CSharpCompilation.Create(NET_ONE_TIME_SCRIPT_ASSEMBLY, new[] { AssemblyInfoSyntaxTree(NET_ONE_TIME_SCRIPT_ASSEMBLY), syntaxTree }, defaultReferences, compileOptions); Assembly assembly = null;