Throw a more detailed error message when creating invalid frozen actors

This commit is contained in:
abcdefg30
2017-05-11 14:06:25 +02:00
committed by reaperrr
parent 2a3139dc39
commit aecfff905d

View File

@@ -18,11 +18,17 @@ using OpenRA.Traits;
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 class FrozenUnderFogInfo : ITraitInfo, Requires<BuildingInfo>, IDefaultVisibilityInfo, IRulesetLoaded
{
[Desc("Players with these stances can always see the actor.")]
public readonly Stance AlwaysVisibleStances = Stance.Ally;
void IRulesetLoaded<ActorInfo>.RulesetLoaded(Ruleset rules, ActorInfo info)
{
if (!info.HasTraitInfo<SelectableInfo>() && !info.HasTraitInfo<IAutoSelectionSizeInfo>())
throw new YamlException("Cannot create a frozen actor for actor type '{0}' with empty bounds (no selection size given).".F(info.Name));
}
public object Create(ActorInitializer init) { return new FrozenUnderFog(init, this); }
}
@@ -61,7 +67,7 @@ namespace OpenRA.Mods.Common.Traits
footprint = footprintCells.SelectMany(c => map.ProjectedCellsCovering(c.ToMPos(map))).ToArray();
}
public void Created(Actor self)
void INotifyCreated.Created(Actor self)
{
frozenStates = new PlayerDictionary<FrozenState>(self.World, (player, playerIndex) =>
{