Explicitly implement interfaces in AttackBase.

This commit is contained in:
Paul Chote
2017-05-28 14:41:01 +01:00
committed by atlimit8
parent 34844e87a3
commit 45b13dabfb
3 changed files with 18 additions and 14 deletions

View File

@@ -111,7 +111,7 @@ namespace OpenRA.Mods.Common.Traits
a.CheckFire(self, facing, target);
}
public IEnumerable<IOrderTargeter> Orders
IEnumerable<IOrderTargeter> IIssueOrder.Orders
{
get
{
@@ -127,7 +127,7 @@ namespace OpenRA.Mods.Common.Traits
}
}
public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued)
Order IIssueOrder.IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued)
{
if (order is AttackOrderTargeter)
{
@@ -145,7 +145,7 @@ namespace OpenRA.Mods.Common.Traits
return null;
}
public virtual void ResolveOrder(Actor self, Order order)
void IResolveOrder.ResolveOrder(Actor self, Order order)
{
var forceAttack = order.OrderString == forceAttackOrderName;
if (forceAttack || order.OrderString == attackOrderName)
@@ -159,7 +159,12 @@ namespace OpenRA.Mods.Common.Traits
}
if (order.OrderString == "Stop")
self.CancelActivity();
OnStopOrder(self);
}
protected virtual void OnStopOrder(Actor self)
{
self.CancelActivity();
}
static Target TargetFromOrder(Actor self, Order order)
@@ -184,7 +189,7 @@ namespace OpenRA.Mods.Common.Traits
return Target.Invalid;
}
public string VoicePhraseForOrder(Actor self, Order order)
string IOrderVoice.VoicePhraseForOrder(Actor self, Order order)
{
return order.OrderString == attackOrderName || order.OrderString == forceAttackOrderName ? Info.Voice : null;
}

View File

@@ -46,12 +46,10 @@ namespace OpenRA.Mods.Common.Traits
return new AttackActivity(self, newTarget, allowMove, forceAttack);
}
public override void ResolveOrder(Actor self, Order order)
protected override void OnStopOrder(Actor self)
{
base.ResolveOrder(self, order);
if (order.OrderString == "Stop")
Target = Target.Invalid;
Target = Target.Invalid;
base.OnStopOrder(self);
}
public void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)

View File

@@ -82,11 +82,12 @@ namespace OpenRA.Mods.D2k.Traits
// If close enough, we don't care about other actors.
var target = self.World.FindActorsInCircle(self.CenterPosition, WormInfo.IgnoreNoiseAttackRange)
.FirstOrDefault(x => attackTrait.HasAnyValidWeapons(Target.FromActor(x)));
if (target != null)
.Select(t => Target.FromActor(t))
.FirstOrDefault(t => attackTrait.HasAnyValidWeapons(t));
if (target.Type == TargetType.Actor)
{
self.CancelActivity();
attackTrait.ResolveOrder(self, new Order("Attack", target, true) { TargetActor = target });
attackTrait.AttackTarget(target, false, true, false);
return;
}