AttackBase handles canceling of (its) target when an unrelated order is issued

This commit is contained in:
Chris Forbes
2009-12-31 09:17:52 +13:00
parent 1ddc5dfbd7
commit e62c281019
5 changed files with 4 additions and 8 deletions

View File

@@ -154,6 +154,8 @@ namespace OpenRa.Game.Traits
self.CancelActivity();
QueueAttack(self, order);
}
else
target = null;
}
protected virtual void QueueAttack(Actor self, Order order)

View File

@@ -8,9 +8,8 @@ namespace OpenRa.Game.Traits
protected override void QueueAttack(Actor self, Order order)
{
self.CancelActivity();
self.QueueActivity(new HeliAttack(order.TargetActor));
target = order.TargetActor;
self.QueueActivity(new HeliAttack(order.TargetActor));
// todo: fly home
}
}

View File

@@ -8,7 +8,6 @@ namespace OpenRa.Game.Traits
protected override void QueueAttack(Actor self, Order order)
{
self.CancelActivity();
target = order.TargetActor;
self.QueueActivity(new FlyAttack(order.TargetActor));
self.QueueActivity(new ReturnToBase(self, null));

View File

@@ -29,7 +29,7 @@ namespace OpenRa.Game.Traits
if (limitedAmmo != null)
limitedAmmo.Attacking(self);
// todo: delay a bit?
// todo: delay a bit? (req making deploy-mine an activity)
Game.world.AddFrameEndTask(
w => w.Add(new Actor(Rules.UnitInfo[self.Info.Primary], self.Location, self.Owner)));

View File

@@ -56,10 +56,6 @@ namespace OpenRa.Game.Traits
{
self.CancelActivity();
self.QueueActivity(new Activities.Move(order.TargetLocation, 8));
var attackBase = self.traits.WithInterface<AttackBase>().FirstOrDefault();
if (attackBase != null)
attackBase.target = null; /* move cancels attack order */
}
}