using System.Collections.Generic; using System.IO; using System.Linq; using Content.Shared.Examine; using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager.Attributes; namespace Content.Shared.Construction.Steps { [DataDefinition] public class NestedConstructionGraphStep : ConstructionGraphStep, ISerializationHooks { [DataField("steps")] public List> Steps { get; private set; } = new(); void ISerializationHooks.AfterDeserialization() { if (Steps.Any(inner => inner.Any(step => step is NestedConstructionGraphStep))) { throw new InvalidDataException("Can't have nested construction steps inside nested construction steps!"); } } public override void DoExamine(ExaminedEvent examinedEvent) { } } }