using System.Collections.Generic; using Content.Server.GameObjects.Components.NodeContainer.Nodes; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.NodeContainer { /// /// Creates and maintains a set of s. /// [RegisterComponent] public class NodeContainerComponent : Component { public override string Name => "NodeContainer"; [ViewVariables] public IReadOnlyList Nodes => _nodes; private List _nodes = new List(); public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); serializer.DataField(ref _nodes, "nodes", new List()); } public override void Initialize() { base.Initialize(); foreach (var node in _nodes) { node.Initialize(Owner); } } protected override void Startup() { base.Startup(); foreach (var node in _nodes) { node.OnContainerStartup(); } } public override void OnRemove() { foreach (var node in _nodes) { node.OnContainerRemove(); } base.OnRemove(); } } }