using Content.Shared.Alert; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Movement.Pulling.Components; /// /// Specifies an entity as being pullable by an entity with /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(Systems.PullingSystem))] public sealed partial class PullableComponent : Component { /// /// The current entity pulling this component. /// [AutoNetworkedField, DataField] public EntityUid? Puller; /// /// The pull joint. /// [AutoNetworkedField, DataField] public string? PullJointId; public bool BeingPulled => Puller != null; /// /// If the physics component has FixedRotation should we keep it upon being pulled /// [Access(typeof(Systems.PullingSystem), Other = AccessPermissions.ReadExecute)] [ViewVariables(VVAccess.ReadWrite), DataField("fixedRotation")] public bool FixedRotationOnPull; /// /// What the pullable's fixedrotation was set to before being pulled. /// [Access(typeof(Systems.PullingSystem), Other = AccessPermissions.ReadExecute)] [AutoNetworkedField, DataField] public bool PrevFixedRotation; [DataField] public ProtoId PulledAlert = "Pulled"; } public sealed partial class StopBeingPulledAlertEvent : BaseAlertEvent;