diff --git a/Content.Server/GameObjects/Components/Items/Storage/Fill/StorageFillComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/Fill/StorageFillComponent.cs new file mode 100644 index 0000000000..2b11eb2503 --- /dev/null +++ b/Content.Server/GameObjects/Components/Items/Storage/Fill/StorageFillComponent.cs @@ -0,0 +1,48 @@ +using System.Collections.Generic; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.Items.Storage.Fill +{ + [RegisterComponent] + internal sealed class StorageFillComponent : Component, IMapInit + { + public override string Name => "StorageFill"; + + private List _contents = new List(); + +#pragma warning disable 649 + [Dependency] private readonly IEntityManager _entityManager; +#pragma warning restore 649 + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _contents, "contents", new List()); + } + + void IMapInit.MapInit() + { + if (_contents.Count == 0) + { + return; + } + + var storage = Owner.GetComponent(); + + void Spawn(string prototype) + { + storage.Insert(_entityManager.SpawnEntity(prototype, Owner.Transform.GridPosition)); + } + + foreach (var prototype in _contents) + { + Spawn(prototype); + } + } + } +}