using Content.Shared.Sticky.Systems; using Content.Shared.Whitelist; using Robust.Shared.GameStates; using Robust.Shared.Utility; namespace Content.Shared.Sticky.Components; /// /// Items that can be stuck to other structures or entities. /// For example, paper stickers or C4 charges. /// [RegisterComponent, NetworkedComponent, Access(typeof(StickySystem))] [AutoGenerateComponentState] public sealed partial class StickyComponent : Component { /// /// What target entities are valid to be surface for sticky entity. /// [DataField] public EntityWhitelist? Whitelist; /// /// What target entities can't be used as surface for sticky entity. /// [DataField] public EntityWhitelist? Blacklist; /// /// How much time it takes to stick the entity to a target. /// If zero, it will immediately be stuck. /// [DataField] public TimeSpan StickDelay = TimeSpan.Zero; /// /// Whether users can unstick the entity after it has been stuck. /// [DataField] public bool CanUnstick = true; /// /// How much time it takes to unstick the entity. /// If zero, it will immediately be unstuck. /// [DataField] public TimeSpan UnstickDelay = TimeSpan.Zero; /// /// Popup message shown when player starts sticking the entity to another entity. /// [DataField] public LocId? StickPopupStart; /// /// Popup message shown when a player successfully sticks the entity. /// [DataField] public LocId? StickPopupSuccess; /// /// Popup message shown when a player starts unsticking the entity from another entity. /// [DataField] public LocId? UnstickPopupStart; /// /// Popup message shown when a player successfully unsticks the entity. /// [DataField] public LocId? UnstickPopupSuccess; /// /// Entity that is used as a surface for the sticky entity. /// Null if entity isn't stuck to anything. /// [DataField, AutoNetworkedField] public EntityUid? StuckTo; /// /// Text to use for the unstick verb. /// [DataField] public LocId VerbText = "comp-sticky-unstick-verb-text"; /// /// Icon to use for the unstick verb. /// [DataField] public SpriteSpecifier VerbIcon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/eject.svg.192dpi.png")); }