using Content.Shared.Storage.EntitySystems;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Item;
using Robust.Shared.Containers;
using Robust.Shared.Prototypes;
using Content.Shared.Tools;
using Robust.Shared.GameStates;
using Content.Shared.DoAfter;
using Robust.Shared.Serialization;
using Robust.Shared.Audio;
using Content.Shared.Whitelist;
namespace Content.Shared.Storage.Components
{
///
/// Logic for a secret slot stash, like plant pot or toilet cistern.
/// Unlike it has logic for opening and closing
/// the stash.
///
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
[Access(typeof(SecretStashSystem))]
public sealed partial class SecretStashComponent : Component
{
///
/// Max item size that can be inserted into secret stash.
///
[DataField("maxItemSize")]
public ProtoId MaxItemSize = "Small";
///
/// Entity blacklist for secret stashes.
///
[DataField]
public EntityWhitelist? Blacklist;
///
/// This sound will be played when you try to insert an item in the stash.
/// The sound will be played whether or not the item is actually inserted.
///
[DataField]
public SoundSpecifier? TryInsertItemSound;
///
/// This sound will be played when you try to remove an item in the stash.
/// The sound will be played whether or not the item is actually removed.
///
[DataField]
public SoundSpecifier? TryRemoveItemSound;
///
/// If true, verbs will appear to help interact with the stash.
///
[DataField, AutoNetworkedField]
public bool HasVerbs = true;
///
/// The name of the secret stash. For example "the toilet cistern".
/// If null, the name of the entity will be used instead.
///
[DataField]
public string? SecretStashName;
///
/// Container used to keep secret stash item.
///
[ViewVariables]
public ContainerSlot ItemContainer = default!;
}
}