Explicitly implement interfaces in AttackBase.
This commit is contained in:
@@ -111,7 +111,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
a.CheckFire(self, facing, target);
|
a.CheckFire(self, facing, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IOrderTargeter> Orders
|
IEnumerable<IOrderTargeter> IIssueOrder.Orders
|
||||||
{
|
{
|
||||||
get
|
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)
|
if (order is AttackOrderTargeter)
|
||||||
{
|
{
|
||||||
@@ -145,7 +145,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void ResolveOrder(Actor self, Order order)
|
void IResolveOrder.ResolveOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
var forceAttack = order.OrderString == forceAttackOrderName;
|
var forceAttack = order.OrderString == forceAttackOrderName;
|
||||||
if (forceAttack || order.OrderString == attackOrderName)
|
if (forceAttack || order.OrderString == attackOrderName)
|
||||||
@@ -159,6 +159,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (order.OrderString == "Stop")
|
if (order.OrderString == "Stop")
|
||||||
|
OnStopOrder(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void OnStopOrder(Actor self)
|
||||||
|
{
|
||||||
self.CancelActivity();
|
self.CancelActivity();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,7 +189,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return Target.Invalid;
|
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;
|
return order.OrderString == attackOrderName || order.OrderString == forceAttackOrderName ? Info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,12 +46,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return new AttackActivity(self, newTarget, allowMove, forceAttack);
|
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)
|
public void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
||||||
|
|||||||
@@ -82,11 +82,12 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
|
|
||||||
// If close enough, we don't care about other actors.
|
// If close enough, we don't care about other actors.
|
||||||
var target = self.World.FindActorsInCircle(self.CenterPosition, WormInfo.IgnoreNoiseAttackRange)
|
var target = self.World.FindActorsInCircle(self.CenterPosition, WormInfo.IgnoreNoiseAttackRange)
|
||||||
.FirstOrDefault(x => attackTrait.HasAnyValidWeapons(Target.FromActor(x)));
|
.Select(t => Target.FromActor(t))
|
||||||
if (target != null)
|
.FirstOrDefault(t => attackTrait.HasAnyValidWeapons(t));
|
||||||
|
|
||||||
|
if (target.Type == TargetType.Actor)
|
||||||
{
|
{
|
||||||
self.CancelActivity();
|
attackTrait.AttackTarget(target, false, true, false);
|
||||||
attackTrait.ResolveOrder(self, new Order("Attack", target, true) { TargetActor = target });
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user