Fix a crash in CheckPlayers when an actor doesn't define an Owner

This commit is contained in:
Pavel Penev
2015-10-22 14:24:07 +03:00
parent 1e890a921f
commit 0487ec0d08

View File

@@ -59,9 +59,17 @@ namespace OpenRA.Mods.Common.Lint
foreach (var kv in map.ActorDefinitions)
{
var actorReference = new ActorReference(kv.Value.Value, kv.Value.ToDictionary());
var ownerName = actorReference.InitDict.Get<OwnerInit>().PlayerName;
if (!playerNames.Contains(ownerName))
emitError("Actor {0} is owned by unknown player {1}.".F(actorReference.Type, ownerName));
var ownerInit = actorReference.InitDict.GetOrDefault<OwnerInit>();
if (ownerInit == null)
{
emitError("Actor {0} is not owned by any player.".F(kv.Key));
}
else
{
var ownerName = ownerInit.PlayerName;
if (!playerNames.Contains(ownerName))
emitError("Actor {0} is owned by unknown player {1}.".F(actorReference.Type, ownerName));
}
}
}
}