using Content.Shared.StepTrigger.Systems;
using Content.Shared.Whitelist;
using Robust.Shared.GameStates;
namespace Content.Shared.StepTrigger.Components;
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
[Access(typeof(StepTriggerSystem))]
public sealed partial class StepTriggerComponent : Component
{
public const float DefaultRequiredTriggeredSpeed = 3.5f;
///
/// List of entities that are currently colliding with the entity.
///
[ViewVariables, AutoNetworkedField]
public HashSet Colliding = new();
///
/// The list of entities that are standing on this entity,
/// which shouldn't be able to trigger it again until stepping off.
///
[ViewVariables, AutoNetworkedField]
public HashSet CurrentlySteppedOn = new();
///
/// Whether or not this component will currently try to trigger for entities.
///
[DataField, AutoNetworkedField]
public bool Active = true;
///
/// Ratio of shape intersection for a trigger to occur.
///
[DataField, AutoNetworkedField]
public float IntersectRatio = 0.3f;
///
/// Entities will only be triggered if their speed exceeds this limit.
///
[DataField, AutoNetworkedField]
public float RequiredTriggeredSpeed = DefaultRequiredTriggeredSpeed;
///
/// If any entities occupy the blacklist on the same tile then steptrigger won't work.
///
[DataField]
public EntityWhitelist? Blacklist;
///
/// If this is true, steptrigger will still occur on entities that are in air / weightless. They do not
/// by default.
///
[DataField, AutoNetworkedField]
public bool IgnoreWeightless;
///
/// Does this have separate "StepOn" and "StepOff" triggers.
///
[DataField, AutoNetworkedField]
public bool StepOn = false;
}
[RegisterComponent]
[Access(typeof(StepTriggerSystem))]
public sealed partial class StepTriggerActiveComponent : Component
{
}