using Content.Shared.Storage.EntitySystems; using Content.Shared.Whitelist; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Storage.Components; /// /// This is used for things like paper bins, in which /// you can only take off of the top of the bin. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(BinSystem))] public sealed partial class BinComponent : Component { /// /// The containers that contain the items held in the bin /// [ViewVariables] public Container ItemContainer = default!; /// /// A list representing the order in which /// all the entities are stored in the bin. /// /// /// The only reason this isn't a stack is so that /// i can handle entities being deleted and removed /// out of order by other systems /// [DataField, AutoNetworkedField] public List Items = new(); /// /// The items that start in the bin. Sorted in order. /// [DataField] public List InitialContents = new(); /// /// A whitelist governing what items can be inserted into the bin. /// [DataField, AutoNetworkedField] public EntityWhitelist? Whitelist; /// /// The maximum amount of items /// that can be stored in the bin. /// [DataField, AutoNetworkedField] public int MaxItems = 20; }