Introduce Target.Type property.

This commit is contained in:
Paul Chote
2013-08-07 22:51:48 +12:00
parent fa517b8787
commit 4f3c9aa0af
18 changed files with 56 additions and 39 deletions

View File

@@ -33,7 +33,7 @@ namespace OpenRA.Mods.RA.Activities
public Attack(Target target, WRange range, bool allowMovement)
{
Target = target;
if (target.IsActor)
if (target.Type == TargetType.Actor)
targetable = target.Actor.TraitOrDefault<ITargetable>();
Range = range;

View File

@@ -24,7 +24,7 @@ namespace OpenRA.Mods.RA.Activities
public override Activity Tick(Actor self)
{
if (!target.IsValid)
if (target.Type != TargetType.Actor)
return NextActivity;
var capturable = target.Actor.Trait<Capturable>();

View File

@@ -27,13 +27,13 @@ namespace OpenRA.Mods.RA.Activities
public override Activity Tick(Actor self)
{
if (IsCanceled || !target.IsValid)
if (IsCanceled || target.Type != TargetType.Actor)
return NextActivity;
self.World.AddFrameEndTask(w => w.Add(new DelayedAction(delay, () =>
{
// Can't demolish an already dead actor
if (!target.IsValid)
if (target.Type != TargetType.Actor)
return;
// Invulnerable actors can't be demolished

View File

@@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA.Activities
public override Activity Tick(Actor self)
{
if (IsCanceled || !target.IsValid || !target.IsActor)
if (IsCanceled || target.Type != TargetType.Actor)
return NextActivity;
var targetActor = target.Actor;

View File

@@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA.Activities
public override Activity Tick(Actor self)
{
if (IsCanceled || !target.IsValid)
if (IsCanceled || target.Type != TargetType.Actor)
return NextActivity;
if (!Util.AdjacentCells(target).Any(c => c == self.Location))

View File

@@ -22,7 +22,7 @@ namespace OpenRA.Mods.RA.Activities
protected override Activity InnerTick(Actor self, AttackBase attack)
{
if (Target.IsActor && Target.Actor.GetDamageState() == DamageState.Undamaged)
if (Target.Type == TargetType.Actor && Target.Actor.GetDamageState() == DamageState.Undamaged)
return NextActivity;
return base.InnerTick(self, attack);

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA.Activities
public override Activity Tick(Actor self)
{
if (IsCanceled || !target.IsValid || target.Actor.Owner == self.Owner)
if (IsCanceled || target.Type != TargetType.Actor || target.Actor.Owner == self.Owner)
return NextActivity;
foreach (var t in target.Actor.TraitsImplementing<IAcceptInfiltrator>())

View File

@@ -23,9 +23,7 @@ namespace OpenRA.Mods.RA.Activities
public override Activity Tick(Actor self)
{
if (IsCanceled)
return NextActivity;
if (!target.IsValid)
if (IsCanceled || target.Type != TargetType.Actor)
return NextActivity;
var b = target.Actor.TraitOrDefault<Building>();

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA.Activities
public override Activity Tick(Actor self)
{
if (IsCanceled || !target.IsValid)
if (IsCanceled || target.Type != TargetType.Actor)
return NextActivity;
var hut = target.Actor.Trait<BridgeHut>();

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA.Activities
public override Activity Tick(Actor self)
{
if (IsCanceled || !target.IsValid)
if (IsCanceled || target.Type != TargetType.Actor)
return NextActivity;
var health = target.Actor.Trait<Health>();

View File

@@ -54,7 +54,7 @@ namespace OpenRA.Mods.RA
if (self.IsDisabled())
return false;
if (target.IsActor && target.Actor.HasTrait<ITargetable>() &&
if (target.Type == TargetType.Actor && target.Actor.HasTrait<ITargetable>() &&
!target.Actor.Trait<ITargetable>().TargetableBy(target.Actor,self))
return false;
@@ -114,7 +114,7 @@ namespace OpenRA.Mods.RA
{
if (order is AttackOrderTargeter)
{
if (target.IsActor)
if (target.Type == TargetType.Actor)
return new Order("Attack", self, queued) { TargetActor = target.Actor };
else
return new Order("Attack", self, queued) { TargetLocation = target.CenterPosition.ToCPos() };

View File

@@ -37,7 +37,7 @@ namespace OpenRA.Mods.RA
public override void DoAttack(Actor self, Target target)
{
if (!CanAttack(self, target) || !target.IsActor)
if (target.Type != TargetType.Actor || !CanAttack(self, target))
return;
var a = ChooseArmamentForTarget(target);

View File

@@ -67,7 +67,7 @@ namespace OpenRA.Mods.RA
base.ResolveOrder(self, order);
if (order.OrderString == "Stop")
target = Target.None;
target = Target.Invalid;
}
public virtual void BuildingComplete(Actor self) { buildComplete = true; }

View File

@@ -258,7 +258,7 @@ namespace OpenRA.Mods.RA.Move
return Enumerable.Reverse(path).Select(c => Target.FromCell(c));
if (destination != null)
return new Target[] { Target.FromCell(destination.Value) };
return Target.NoTargets;
return Target.None;
}
abstract class MovePart : Activity