Add dictionary support for ActorReference.
This commit is contained in:
@@ -23,10 +23,21 @@ namespace OpenRA.Traits
|
||||
[AttributeUsage(AttributeTargets.Field)]
|
||||
public sealed class ActorReferenceAttribute : Attribute
|
||||
{
|
||||
public Type[] RequiredTraits;
|
||||
public ActorReferenceAttribute(params Type[] requiredTraits)
|
||||
public readonly Type[] RequiredTraits;
|
||||
public readonly LintDictionaryReference DictionaryReference;
|
||||
|
||||
public ActorReferenceAttribute(Type[] requiredTraits,
|
||||
LintDictionaryReference dictionaryReference = LintDictionaryReference.None)
|
||||
{
|
||||
RequiredTraits = requiredTraits;
|
||||
DictionaryReference = dictionaryReference;
|
||||
}
|
||||
|
||||
public ActorReferenceAttribute(Type requiredTrait = null,
|
||||
LintDictionaryReference dictionaryReference = LintDictionaryReference.None)
|
||||
{
|
||||
RequiredTraits = requiredTrait != null ? new[] { requiredTrait } : new Type[0];
|
||||
DictionaryReference = dictionaryReference;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
||||
{
|
||||
[FieldLoader.Require]
|
||||
[Desc("Drop pod unit")]
|
||||
[ActorReference(typeof(AircraftInfo), typeof(FallsToEarthInfo))]
|
||||
[ActorReference(new[] { typeof(AircraftInfo), typeof(FallsToEarthInfo) })]
|
||||
public readonly string[] UnitTypes = null;
|
||||
|
||||
[Desc("Number of drop pods spawned.")]
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
IReadOnlyDictionary<string, ActorInfo> dict,
|
||||
ActorReferenceAttribute attribute)
|
||||
{
|
||||
var values = LintExts.GetFieldValues(traitInfo, fieldInfo, emitError);
|
||||
var values = LintExts.GetFieldValues(traitInfo, fieldInfo, emitError, attribute.DictionaryReference);
|
||||
foreach (var value in values)
|
||||
{
|
||||
if (value == null)
|
||||
|
||||
Reference in New Issue
Block a user