Generate initial frozen renderables for all map-placed actors.

This commit is contained in:
Paul Chote
2016-04-17 16:30:28 -04:00
parent d7f140d5a3
commit 183e5ae7ab
6 changed files with 23 additions and 9 deletions

View File

@@ -20,8 +20,6 @@ namespace OpenRA.Mods.Common.Traits
[Desc("This actor will remain visible (but not updated visually) under fog, once discovered.")]
public class FrozenUnderFogInfo : ITraitInfo, Requires<BuildingInfo>, IDefaultVisibilityInfo
{
public readonly bool StartsRevealed = false;
[Desc("Players with these stances can always see the actor.")]
public readonly Stance AlwaysVisibleStances = Stance.Ally;
@@ -55,8 +53,9 @@ namespace OpenRA.Mods.Common.Traits
var map = init.World.Map;
// Spawned actors (e.g. building husks) shouldn't be revealed
startsRevealed = info.StartsRevealed && !init.Contains<ParentActorInit>();
// Explore map-placed actors if the "Explore Map" option is enabled
var exploredMap = !init.World.LobbyInfo.GlobalSettings.Shroud;
startsRevealed = exploredMap && init.Contains<SpawnedByMapInit>() && !init.Contains<HiddenUnderFogInit>();
var footprintCells = FootprintUtils.Tiles(init.Self).ToList();
footprint = footprintCells.SelectMany(c => map.ProjectedCellsCovering(c.ToMPos(map))).ToArray();
}
@@ -142,4 +141,6 @@ namespace OpenRA.Mods.Common.Traits
return IsVisible(self, self.World.RenderPlayer) || isRendering ? r : SpriteRenderable.None;
}
}
public class HiddenUnderFogInit : IActorInit { }
}