From 898ef8fe50280847a518bc28c469140b14d99763 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 23 Jul 2017 17:54:42 +0100 Subject: [PATCH] Add support for queuing Guard orders. --- OpenRA.Mods.Common/Orders/GuardOrderGenerator.cs | 4 +++- OpenRA.Mods.Common/Traits/Guard.cs | 13 ++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/OpenRA.Mods.Common/Orders/GuardOrderGenerator.cs b/OpenRA.Mods.Common/Orders/GuardOrderGenerator.cs index 24f96070ec..7504c4e75c 100644 --- a/OpenRA.Mods.Common/Orders/GuardOrderGenerator.cs +++ b/OpenRA.Mods.Common/Orders/GuardOrderGenerator.cs @@ -31,9 +31,11 @@ namespace OpenRA.Mods.Common.Orders yield break; world.CancelInputMode(); + + var queued = mi.Modifiers.HasModifier(Modifiers.Shift); foreach (var subject in Subjects) 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) diff --git a/OpenRA.Mods.Common/Traits/Guard.cs b/OpenRA.Mods.Common/Traits/Guard.cs index 04b9dcf89b..01ffb25d1e 100644 --- a/OpenRA.Mods.Common/Traits/Guard.cs +++ b/OpenRA.Mods.Common/Traits/Guard.cs @@ -41,19 +41,18 @@ namespace OpenRA.Mods.Common.Traits public void ResolveOrder(Actor self, Order order) { if (order.OrderString == "Guard") - { - var target = Target.FromActor(order.TargetActor); - - GuardTarget(self, target); - } + GuardTarget(self, Target.FromActor(order.TargetActor), order.Queued); } - 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); var range = target.Actor.Info.TraitInfo().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)