using Content.Shared.Whitelist;
namespace Content.Server.Sticky.Components;
///
/// Items that can be stick to other structures or entities.
/// For example paper stickers or C4 charges.
///
[RegisterComponent]
public sealed class StickyComponent : Component
{
///
/// What target entities are valid to be surface for sticky entity.
///
[DataField("whitelist")]
[ViewVariables(VVAccess.ReadWrite)]
public EntityWhitelist? Whitelist;
///
/// What target entities can't be used as surface for sticky entity.
///
[DataField("blacklist")]
[ViewVariables(VVAccess.ReadWrite)]
public EntityWhitelist? Blacklist;
///
/// How much time does it take to stick entity to target.
/// If zero will stick entity immediately.
///
[DataField("stickDelay")]
[ViewVariables(VVAccess.ReadWrite)]
public TimeSpan StickDelay = TimeSpan.Zero;
///
/// Whether users can unstick item when it was stuck to surface.
///
[DataField("canUnstick")]
[ViewVariables(VVAccess.ReadWrite)]
public bool CanUnstick = true;
///
/// How much time does it take to unstick entity.
/// If zero will unstick entity immediately.
///
[DataField("unstickDelay")]
[ViewVariables(VVAccess.ReadWrite)]
public TimeSpan UnstickDelay = TimeSpan.Zero;
///
/// Popup message shown when player started sticking entity to another entity.
///
[DataField("stickPopupStart")]
[ViewVariables(VVAccess.ReadWrite)]
public string? StickPopupStart;
///
/// Popup message shown when player successfully stuck entity.
///
[DataField("stickPopupSuccess")]
[ViewVariables(VVAccess.ReadWrite)]
public string? StickPopupSuccess;
///
/// Popup message shown when player started unsticking entity from another entity.
///
[DataField("unstickPopupStart")]
[ViewVariables(VVAccess.ReadWrite)]
public string? UnstickPopupStart;
///
/// Popup message shown when player successfully unstuck entity.
///
[DataField("unstickPopupSuccess")]
[ViewVariables(VVAccess.ReadWrite)]
public string? UnstickPopupSuccess;
///
/// Entity that is used as surface for sticky entity.
/// Null if entity doesn't stuck to anything.
///
[ViewVariables(VVAccess.ReadOnly)]
public EntityUid? StuckTo;
}