Replace ActorInfo.Traits.WithInterface with ActorInfo.TraitInfos<T>()
This commit is contained in:
@@ -24,7 +24,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
this.emitError = emitError;
|
||||
|
||||
foreach (var actorInfo in rules.Actors)
|
||||
foreach (var traitInfo in actorInfo.Value.Traits.WithInterface<ITraitInfo>())
|
||||
foreach (var traitInfo in actorInfo.Value.TraitInfos<ITraitInfo>())
|
||||
CheckTrait(actorInfo.Value, traitInfo, rules);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
{
|
||||
foreach (var actorInfo in rules.Actors)
|
||||
{
|
||||
var animations = actorInfo.Value.Traits.WithInterface<WithDeathAnimationInfo>().ToList();
|
||||
var animations = actorInfo.Value.TraitInfos<WithDeathAnimationInfo>().ToList();
|
||||
if (!animations.Any())
|
||||
continue;
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
if (!deathTypes.Any())
|
||||
continue;
|
||||
|
||||
var targetable = actorInfo.Value.Traits.WithInterface<ITargetableInfo>().SelectMany(x => x.GetTargetTypes()).ToList();
|
||||
var targetable = actorInfo.Value.TraitInfos<ITargetableInfo>().SelectMany(x => x.GetTargetTypes()).ToList();
|
||||
if (!targetable.Any())
|
||||
continue;
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
if (actorInfo.Key.StartsWith("^"))
|
||||
continue;
|
||||
|
||||
var count = actorInfo.Value.Traits.WithInterface<IDefaultVisibilityInfo>().Count();
|
||||
var count = actorInfo.Value.TraitInfos<IDefaultVisibilityInfo>().Count();
|
||||
|
||||
if (count == 0)
|
||||
emitError("Actor type `{0}` does not define a default visibility type!".F(actorInfo.Key));
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
|
||||
var worldActor = map.Rules.Actors["world"];
|
||||
|
||||
var factions = worldActor.Traits.WithInterface<FactionInfo>().Select(f => f.InternalName).ToHashSet();
|
||||
var factions = worldActor.TraitInfos<FactionInfo>().Select(f => f.InternalName).ToHashSet();
|
||||
foreach (var player in players.Values)
|
||||
if (!string.IsNullOrWhiteSpace(player.Faction) && !factions.Contains(player.Faction))
|
||||
emitError("Invalid faction {0} chosen for player {1}.".F(player.Faction, player.Name));
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
continue;
|
||||
|
||||
var ios = actorInfo.Value.TraitInfoOrDefault<IOccupySpaceInfo>();
|
||||
foreach (var rsi in actorInfo.Value.Traits.WithInterface<RevealsShroudInfo>())
|
||||
foreach (var rsi in actorInfo.Value.TraitInfos<RevealsShroudInfo>())
|
||||
{
|
||||
if (rsi.Type == VisibilityType.CenterPosition)
|
||||
continue;
|
||||
|
||||
@@ -36,12 +36,12 @@ namespace OpenRA.Mods.Common.Lint
|
||||
Game.ModData.Manifest.Sequences.Select(MiniYaml.FromFile).Aggregate(MiniYaml.MergeLiberal));
|
||||
|
||||
var rules = map == null ? Game.ModData.DefaultRules : map.Rules;
|
||||
var factions = rules.Actors["world"].Traits.WithInterface<FactionInfo>().Select(f => f.InternalName).ToArray();
|
||||
var factions = rules.Actors["world"].TraitInfos<FactionInfo>().Select(f => f.InternalName).ToArray();
|
||||
var sequenceProviders = map == null ? rules.Sequences.Values : new[] { rules.Sequences[map.Tileset] };
|
||||
|
||||
foreach (var actorInfo in rules.Actors)
|
||||
{
|
||||
foreach (var renderInfo in actorInfo.Value.Traits.WithInterface<RenderSpritesInfo>())
|
||||
foreach (var renderInfo in actorInfo.Value.TraitInfos<RenderSpritesInfo>())
|
||||
{
|
||||
foreach (var faction in factions)
|
||||
{
|
||||
@@ -68,7 +68,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
if (string.IsNullOrEmpty(sequence))
|
||||
continue;
|
||||
|
||||
var renderInfo = actorInfo.Value.Traits.WithInterface<RenderSpritesInfo>().FirstOrDefault();
|
||||
var renderInfo = actorInfo.Value.TraitInfos<RenderSpritesInfo>().FirstOrDefault();
|
||||
if (renderInfo == null)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -111,14 +111,14 @@ namespace OpenRA.Mods.Common.Lint
|
||||
}
|
||||
|
||||
// TODO: HACK because GainsExperience grants upgrades differently to most other sources.
|
||||
var gainsExperience = rules.Actors.SelectMany(x => x.Value.Traits.WithInterface<GainsExperienceInfo>()
|
||||
var gainsExperience = rules.Actors.SelectMany(x => x.Value.TraitInfos<GainsExperienceInfo>()
|
||||
.SelectMany(y => y.Upgrades.SelectMany(z => z.Value)));
|
||||
|
||||
foreach (var upgrade in gainsExperience)
|
||||
yield return upgrade;
|
||||
|
||||
// TODO: HACK because Pluggable grants upgrades differently to most other sources.
|
||||
var pluggable = rules.Actors.SelectMany(x => x.Value.Traits.WithInterface<PluggableInfo>()
|
||||
var pluggable = rules.Actors.SelectMany(x => x.Value.TraitInfos<PluggableInfo>()
|
||||
.SelectMany(y => y.Upgrades.SelectMany(z => z.Value)));
|
||||
|
||||
foreach (var upgrade in pluggable)
|
||||
@@ -143,7 +143,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
|
||||
// TODO: HACK because GainsExperience and GainsStatUpgrades do not play by the rules...
|
||||
// We assume everything GainsExperience grants is used by GainsStatUpgrade
|
||||
var gainsExperience = rules.Actors.SelectMany(x => x.Value.Traits.WithInterface<GainsExperienceInfo>()
|
||||
var gainsExperience = rules.Actors.SelectMany(x => x.Value.TraitInfos<GainsExperienceInfo>()
|
||||
.SelectMany(y => y.Upgrades.SelectMany(z => z.Value)));
|
||||
|
||||
foreach (var upgrade in gainsExperience)
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
{
|
||||
foreach (var actorInfo in rules.Actors)
|
||||
{
|
||||
foreach (var traitInfo in actorInfo.Value.Traits.WithInterface<ITraitInfo>())
|
||||
foreach (var traitInfo in actorInfo.Value.TraitInfos<ITraitInfo>())
|
||||
{
|
||||
var fields = traitInfo.GetType().GetFields().Where(f => f.HasAttribute<VoiceSetReferenceAttribute>());
|
||||
foreach (var field in fields)
|
||||
@@ -43,7 +43,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
{
|
||||
var soundInfo = rules.Voices[voiceSet.ToLowerInvariant()];
|
||||
|
||||
foreach (var traitInfo in actorInfo.Traits.WithInterface<ITraitInfo>())
|
||||
foreach (var traitInfo in actorInfo.TraitInfos<ITraitInfo>())
|
||||
{
|
||||
var fields = traitInfo.GetType().GetFields().Where(f => f.HasAttribute<VoiceReferenceAttribute>());
|
||||
foreach (var field in fields)
|
||||
|
||||
@@ -20,13 +20,12 @@ namespace OpenRA.Mods.Common.Lint
|
||||
public void Run(Action<string> emitError, Action<string> emitWarning, Ruleset rules)
|
||||
{
|
||||
// ProvidesPrerequisite allows arbitrary prereq definitions
|
||||
var customPrereqs = rules.Actors.SelectMany(a => a.Value.Traits
|
||||
.WithInterface<ProvidesPrerequisiteInfo>().Select(p => p.Prerequisite ?? a.Value.Name));
|
||||
var customPrereqs = rules.Actors.SelectMany(a => a.Value.TraitInfos<ProvidesPrerequisiteInfo>()
|
||||
.Select(p => p.Prerequisite ?? a.Value.Name));
|
||||
|
||||
// ProvidesTechPrerequisite allows arbitrary prereq definitions
|
||||
// (but only one group at a time during gameplay)
|
||||
var techPrereqs = rules.Actors.SelectMany(a => a.Value.Traits
|
||||
.WithInterface<ProvidesTechPrerequisiteInfo>())
|
||||
var techPrereqs = rules.Actors.SelectMany(a => a.Value.TraitInfos<ProvidesTechPrerequisiteInfo>())
|
||||
.SelectMany(p => p.Prerequisites);
|
||||
|
||||
var providedPrereqs = customPrereqs.Concat(techPrereqs);
|
||||
|
||||
Reference in New Issue
Block a user