Fix lua sanity check crashing on dedicated servers
This commit is contained in:
committed by
Matthias Mailänder
parent
1ce916182d
commit
f99db8d754
@@ -10,32 +10,21 @@
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using OpenRA.FileSystem;
|
||||
using OpenRA.Mods.Common.Scripting;
|
||||
using OpenRA.Server;
|
||||
|
||||
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)
|
||||
{
|
||||
CheckLuaScriptFileExistance(emitError, map.Package, modData.DefaultFileSystem, map.Rules);
|
||||
}
|
||||
|
||||
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>();
|
||||
var luaScriptInfo = map.Rules.Actors[SystemActors.World].TraitInfoOrDefault<LuaScriptInfo>();
|
||||
if (luaScriptInfo == null)
|
||||
return;
|
||||
|
||||
// We aren't running this lint on servers as they don't create map packages.
|
||||
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.");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user