Avoid querying traits from dead minelayers.

This commit is contained in:
Paul Chote
2016-12-17 21:10:11 +00:00
parent aeceb87b6f
commit 40419bc8ea

View File

@@ -183,14 +183,15 @@ namespace OpenRA.Mods.RA.Traits
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } public IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
public IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) public IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world)
{ {
if (!minelayers.Any()) var minelayer = minelayers.FirstOrDefault(m => m.IsInWorld && !m.IsDead);
if (minelayer == null)
yield break; yield break;
// We get the biggest depth so we cover all cells that mines could be placed on. // We get the biggest depth so we cover all cells that mines could be placed on.
var minefield = GetMinefieldCells(minefieldStart, lastMousePos, var minefield = GetMinefieldCells(minefieldStart, lastMousePos,
minelayers.Max(m => m.Info.TraitInfo<MinelayerInfo>().MinefieldDepth)); minelayers.Max(m => m.Info.TraitInfo<MinelayerInfo>().MinefieldDepth));
var movement = minelayers.First().Trait<IPositionable>();
var movement = minelayer.Trait<IPositionable>();
var pal = wr.Palette(TileSet.TerrainPaletteInternalName); var pal = wr.Palette(TileSet.TerrainPaletteInternalName);
foreach (var c in minefield) foreach (var c in minefield)
{ {