allow to lay single mines similiar to the original

closes #5467
This commit is contained in:
Matthias Mailänder
2014-06-21 21:16:10 +02:00
parent d3d74c4e5f
commit 48a5c69ab8

View File

@@ -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<IOrderTargeter> 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<IPositionable>();