Add support for queuing Guard orders.
This commit is contained in:
committed by
Matthias Mailänder
parent
f4f27f8980
commit
898ef8fe50
@@ -31,9 +31,11 @@ namespace OpenRA.Mods.Common.Orders
|
|||||||
yield break;
|
yield break;
|
||||||
|
|
||||||
world.CancelInputMode();
|
world.CancelInputMode();
|
||||||
|
|
||||||
|
var queued = mi.Modifiers.HasModifier(Modifiers.Shift);
|
||||||
foreach (var subject in Subjects)
|
foreach (var subject in Subjects)
|
||||||
if (subject != target)
|
if (subject != target)
|
||||||
yield return new Order(OrderName, subject, false) { TargetActor = target };
|
yield return new Order(OrderName, subject, queued) { TargetActor = target };
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Tick(World world)
|
public override void Tick(World world)
|
||||||
|
|||||||
@@ -41,19 +41,18 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
if (order.OrderString == "Guard")
|
if (order.OrderString == "Guard")
|
||||||
{
|
GuardTarget(self, Target.FromActor(order.TargetActor), order.Queued);
|
||||||
var target = Target.FromActor(order.TargetActor);
|
|
||||||
|
|
||||||
GuardTarget(self, target);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GuardTarget(Actor self, Target target)
|
public void GuardTarget(Actor self, Target target, bool queued = false)
|
||||||
{
|
{
|
||||||
|
if (!queued)
|
||||||
|
self.CancelActivity();
|
||||||
|
|
||||||
self.SetTargetLine(target, Color.Yellow);
|
self.SetTargetLine(target, Color.Yellow);
|
||||||
|
|
||||||
var range = target.Actor.Info.TraitInfo<GuardableInfo>().Range;
|
var range = target.Actor.Info.TraitInfo<GuardableInfo>().Range;
|
||||||
self.QueueActivity(false, new AttackMoveActivity(self, move.MoveFollow(self, target, WDist.Zero, range)));
|
self.QueueActivity(new AttackMoveActivity(self, move.MoveFollow(self, target, WDist.Zero, range)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
|
|||||||
Reference in New Issue
Block a user