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