using Content.Shared.Item; using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.ParcelWrap.Components; /// /// This component gives its owning entity the ability to wrap items into parcels. /// /// [RegisterComponent, NetworkedComponent] [Access] // Readonly, except for VV editing public sealed partial class ParcelWrapComponent : Component { /// /// The of the parcel created by using this component. /// [DataField(required: true)] public EntProtoId ParcelPrototype; /// /// If true, parcels created by this will have the same size as the item they /// contain. If false, parcels created by this will always have the size specified by . /// [DataField] public bool WrappedItemsMaintainSize = true; /// /// The size of parcels created by this component's entity. This is used if /// is false, or if the item being wrapped somehow doesn't have a size. /// [DataField] public ProtoId FallbackItemSize = "Ginormous"; /// /// If true, parcels created by this will have the same shape as the item they contain. If false, parcels created by /// this will have the default shape for their size. /// [DataField] public bool WrappedItemsMaintainShape; /// /// How long it takes to use this to wrap something. /// [DataField(required: true)] public TimeSpan WrapDelay = TimeSpan.FromSeconds(1); /// /// Sound played when this is used to wrap something. /// [DataField] public SoundSpecifier? WrapSound; /// /// Defines the set of things which can be wrapped (unless it fails the ). /// [DataField] public EntityWhitelist? Whitelist; /// /// Defines the set of things which cannot be wrapped (even if it passes the ). /// [DataField] public EntityWhitelist? Blacklist; }