Fix sequences only being checked on actors with RenderSprites

This commit is contained in:
abcdefg30
2022-07-07 17:07:10 +02:00
committed by Pavel Penev
parent 0ded8f8080
commit 8a98ad51fd

View File

@@ -40,19 +40,18 @@ namespace OpenRA.Mods.Common.Lint
var factions = rules.Actors[SystemActors.World].TraitInfos<FactionInfo>().Select(f => f.InternalName).ToArray(); var factions = rules.Actors[SystemActors.World].TraitInfos<FactionInfo>().Select(f => f.InternalName).ToArray();
foreach (var actorInfo in rules.Actors) foreach (var actorInfo in rules.Actors)
{ {
var images = new HashSet<string>();
// Actors may have 0 or 1 RenderSprites traits // Actors may have 0 or 1 RenderSprites traits
var renderInfo = actorInfo.Value.TraitInfoOrDefault<RenderSpritesInfo>(); var renderInfo = actorInfo.Value.TraitInfoOrDefault<RenderSpritesInfo>();
if (renderInfo == null) if (renderInfo != null)
continue;
var images = new HashSet<string>()
{ {
renderInfo.GetImage(actorInfo.Value, null).ToLowerInvariant() images.Add(renderInfo.GetImage(actorInfo.Value, null).ToLowerInvariant());
};
// Some actors define faction-specific artwork // Some actors define faction-specific artwork
foreach (var faction in factions) foreach (var faction in factions)
images.Add(renderInfo.GetImage(actorInfo.Value, faction).ToLowerInvariant()); images.Add(renderInfo.GetImage(actorInfo.Value, faction).ToLowerInvariant());
}
foreach (var traitInfo in actorInfo.Value.TraitInfos<TraitInfo>()) foreach (var traitInfo in actorInfo.Value.TraitInfos<TraitInfo>())
{ {
@@ -77,6 +76,7 @@ namespace OpenRA.Mods.Common.Lint
{ {
if (!sequenceReference.AllowNullImage) if (!sequenceReference.AllowNullImage)
emitError($"Actor type `{actorInfo.Value.Name}` trait `{traitName}` must define a value for `{sequenceReference.ImageReference}`"); emitError($"Actor type `{actorInfo.Value.Name}` trait `{traitName}` must define a value for `{sequenceReference.ImageReference}`");
continue; continue;
} }