Fix lua sanity check crashing on dedicated servers

This commit is contained in:
Gustas
2023-08-03 14:54:05 +03:00
committed by Matthias Mailänder
parent 1ce916182d
commit f99db8d754

View File

@@ -10,32 +10,21 @@
#endregion #endregion
using System; using System;
using OpenRA.FileSystem;
using OpenRA.Mods.Common.Scripting; using OpenRA.Mods.Common.Scripting;
using OpenRA.Server;
namespace OpenRA.Mods.Common.Lint namespace OpenRA.Mods.Common.Lint
{ {
public class CheckLuaScript : ILintMapPass, ILintServerMapPass public class CheckLuaScript : ILintMapPass
{ {
void ILintMapPass.Run(Action<string> emitError, Action<string> emitWarning, ModData modData, Map map) void ILintMapPass.Run(Action<string> emitError, Action<string> emitWarning, ModData modData, Map map)
{ {
CheckLuaScriptFileExistance(emitError, map.Package, modData.DefaultFileSystem, map.Rules); var luaScriptInfo = map.Rules.Actors[SystemActors.World].TraitInfoOrDefault<LuaScriptInfo>();
}
void ILintServerMapPass.Run(Action<string> emitError, Action<string> emitWarning, ModData modData, MapPreview map, Ruleset mapRules)
{
CheckLuaScriptFileExistance(emitError, map.Package, modData.DefaultFileSystem, mapRules);
}
static void CheckLuaScriptFileExistance(Action<string> emitError, IReadOnlyPackage package, IReadOnlyFileSystem fileSystem, Ruleset mapRules)
{
var luaScriptInfo = mapRules.Actors[SystemActors.World].TraitInfoOrDefault<LuaScriptInfo>();
if (luaScriptInfo == null) if (luaScriptInfo == null)
return; return;
// We aren't running this lint on servers as they don't create map packages.
foreach (var script in luaScriptInfo.Scripts) foreach (var script in luaScriptInfo.Scripts)
if (!package.Contains(script) && !fileSystem.Exists(script)) if (!map.Package.Contains(script) && !modData.DefaultFileSystem.Exists(script))
emitError($"Lua script `{script}` does not exist."); emitError($"Lua script `{script}` does not exist.");
} }
} }