// SPDX-FileCopyrightText: 2024 keronshb <54602815+keronshb@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Aviu00 <93730715+Aviu00@users.noreply.github.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later
using Content.Shared.Storage.EntitySystems;
using Content.Shared.Whitelist;
using Robust.Shared.GameStates;
namespace Content.Shared.Storage.Components;
// Use where you want an entity to store other entities on collide
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(StoreOnCollideSystem))]
public sealed partial class StoreOnCollideComponent : Component
{
///
/// Entities that are allowed in the storage on collide
///
[DataField]
public EntityWhitelist? Whitelist;
///
/// Should this storage lock on collide, provided they have a lock component?
///
[DataField]
public bool LockOnCollide;
///
/// Should the behavior be disabled when the storage is first opened?
///
[DataField]
public bool DisableWhenFirstOpened;
///
/// If the behavior is disabled or not
///
[DataField, AutoNetworkedField]
public bool Disabled;
///
/// Goobstation
/// Don't store this entity, it is used for shooter if this is projectile
///
[DataField, AutoNetworkedField]
public EntityUid? IgnoredEntity;
///
/// Goobstation
/// Should the behavior be disabled when entity (physics) sleeps?
///
[DataField, AutoNetworkedField]
public bool DisableOnSleep;
}