using System; using System.Collections.Generic; using Robust.Server.GameObjects.Components.Container; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects.Components; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects { public class ContainerSlot : BaseContainer { [ViewVariables] public IEntity ContainedEntity { get; private set; } = null; /// public override IReadOnlyCollection ContainedEntities { get { if (ContainedEntity == null) { return Array.Empty(); } return new List {ContainedEntity}.AsReadOnly(); } } public ContainerSlot(string id, IContainerManager manager) : base(id, manager) { } /// public override bool CanInsert(IEntity toinsert) { if (ContainedEntity != null) return false; return base.CanInsert(toinsert); } /// public override bool Contains(IEntity contained) { if (contained != null && contained == ContainedEntity) return true; return false; } /// protected override void InternalInsert(IEntity toinsert) { ContainedEntity = toinsert; base.InternalInsert(toinsert); } /// protected override void InternalRemove(IEntity toremove) { ContainedEntity = null; base.InternalRemove(toremove); } public override void Shutdown() { base.Shutdown(); ContainedEntity?.Delete(); } } }