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, AutoGenerateComponentState] [Access] // Readonly, except for VV editing public sealed partial class ParcelWrapComponent : Component { /// /// The of the parcel created by using this component. /// [DataField(required: true), AutoNetworkedField] 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, AutoNetworkedField] 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, AutoNetworkedField] 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, AutoNetworkedField] public bool WrappedItemsMaintainShape; /// /// How long it takes to use this to wrap something. /// [DataField(required: true), AutoNetworkedField] public TimeSpan WrapDelay = TimeSpan.FromSeconds(1); /// /// Sound played when this is used to wrap something. /// [DataField, AutoNetworkedField] public SoundSpecifier? WrapSound; /// /// Defines the set of things which can be wrapped (unless it fails the ). /// [DataField, AutoNetworkedField] public EntityWhitelist? Whitelist; /// /// Defines the set of things which cannot be wrapped (even if it passes the ). /// [DataField, AutoNetworkedField] public EntityWhitelist? Blacklist; /// /// If a player trapped inside this parcel can escape from it by unwrapping it. /// [DataField, AutoNetworkedField] public bool CanSelfUnwrap = true; }