From 48a5c69ab89ad0e4dc427d494e9bd5474bad0214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sat, 21 Jun 2014 21:16:10 +0200 Subject: [PATCH] allow to lay single mines similiar to the original closes #5467 --- OpenRA.Mods.RA/Minelayer.cs | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/OpenRA.Mods.RA/Minelayer.cs b/OpenRA.Mods.RA/Minelayer.cs index cd14aeaf4b..86bbf6f5d0 100644 --- a/OpenRA.Mods.RA/Minelayer.cs +++ b/OpenRA.Mods.RA/Minelayer.cs @@ -13,6 +13,7 @@ using System.Collections.Generic; using System.Linq; using OpenRA.Graphics; using OpenRA.Mods.RA.Activities; +using OpenRA.Mods.RA.Orders; using OpenRA.Traits; namespace OpenRA.Mods.RA @@ -45,17 +46,26 @@ namespace OpenRA.Mods.RA public IEnumerable Orders { - get { yield return new BeginMinefieldOrderTargeter(); } + get + { + yield return new BeginMinefieldOrderTargeter(); + yield return new DeployOrderTargeter("PlaceMine", 5); + } } public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued) { - if (!(order is BeginMinefieldOrderTargeter)) - return null; - - var start = target.CenterPosition.ToCPos(); - self.World.OrderGenerator = new MinefieldOrderGenerator(self, start); - return new Order("BeginMinefield", self, false) { TargetLocation = start }; + switch (order.OrderID) + { + case "BeginMinefield": + var start = target.CenterPosition.ToCPos(); + self.World.OrderGenerator = new MinefieldOrderGenerator(self, start); + return new Order("BeginMinefield", self, false) { TargetLocation = start }; + case "PlaceMine": + return new Order("PlaceMine", self, false) { TargetLocation = self.Location }; + default: + return null; + } } public void ResolveOrder(Actor self, Order order) @@ -63,6 +73,14 @@ namespace OpenRA.Mods.RA if (order.OrderString == "BeginMinefield") minefieldStart = order.TargetLocation; + if (order.OrderString == "PlaceMine") + { + minefieldStart = order.TargetLocation; + Minefield = new CPos[] { order.TargetLocation }; + self.CancelActivity(); + self.QueueActivity(new LayMines()); + } + if (order.OrderString == "PlaceMinefield") { var movement = self.Trait();