Lay mines in order from start to end.

This commit is contained in:
Paul Chote
2019-08-16 22:40:45 +00:00
committed by teinarss
parent 3a51cf0ef8
commit 9aec48aec3
2 changed files with 41 additions and 33 deletions

View File

@@ -41,9 +41,6 @@ namespace OpenRA.Mods.Cnc.Traits
{
public readonly MinelayerInfo Info;
// TODO: [Sync] when sync can cope with arrays!
public CPos[] Minefield = null;
public readonly Sprite Tile;
[Sync]
@@ -104,15 +101,16 @@ namespace OpenRA.Mods.Cnc.Traits
if (order.OrderString == "BeginMinefield")
minefieldStart = cell;
else if (order.OrderString == "PlaceMine")
self.QueueActivity(order.Queued, new LayMines(self, null));
self.QueueActivity(order.Queued, new LayMines(self));
else if (order.OrderString == "PlaceMinefield")
{
var movement = self.Trait<IPositionable>();
Minefield = GetMinefieldCells(minefieldStart, cell, Info.MinefieldDepth)
.Where(p => movement.CanEnterCell(p, null, false)).ToArray();
var minefield = GetMinefieldCells(minefieldStart, cell, Info.MinefieldDepth)
.Where(c => movement.CanEnterCell(c, null, false))
.OrderBy(c => (c - minefieldStart).LengthSquared).ToList();
self.QueueActivity(order.Queued, new LayMines(self, Minefield));
self.QueueActivity(order.Queued, new LayMines(self, minefield));
self.ShowTargetLines();
}
}