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
|
#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.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user