Don't draw mine overlay for single-cell fields.

This commit is contained in:
Paul Chote
2017-09-25 21:14:19 +01:00
committed by reaperrr
parent a0e028ee0e
commit 69daa7e7cc

View File

@@ -11,6 +11,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Mods.Cnc.Activities;
@@ -102,10 +103,12 @@ namespace OpenRA.Mods.Cnc.Traits
{
var movement = self.Trait<IPositionable>();
Minefield = GetMinefieldCells(minefieldStart, order.TargetLocation,
self.Info.TraitInfo<MinelayerInfo>().MinefieldDepth)
Minefield = GetMinefieldCells(minefieldStart, order.TargetLocation, info.MinefieldDepth)
.Where(p => movement.CanEnterCell(p, null, false)).ToArray();
if (Minefield.Length == 1 && Minefield[0] != self.Location)
self.SetTargetLine(Target.FromCell(self.World, Minefield[0]), Color.Red);
self.CancelActivity();
self.QueueActivity(new LayMines(self));
}
@@ -143,6 +146,10 @@ namespace OpenRA.Mods.Cnc.Traits
if (self.Owner != self.World.LocalPlayer || Minefield == null)
yield break;
// Single-cell mine fields use a target line instead
if (Minefield.Length == 1)
yield break;
var pal = wr.Palette(TileSet.TerrainPaletteInternalName);
foreach (var c in Minefield)
yield return new SpriteRenderable(tile, self.World.Map.CenterOfCell(c),