using Content.Shared.Actions; using Content.Shared.DoAfter; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Physics.Dynamics; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Content.Shared.FixedPoint; namespace Content.Shared._White.Actions.Events; /// /// Event for placing a tile and/or spawning an entity in under the object that triggers it with a delay. /// public sealed partial class SpawnTileEntityActionEvent : InstantActionEvent { /// /// The prototype of the entity to be created /// [DataField] public EntProtoId? Entity; /// /// The identifier of the tile to be placed /// [DataField] public string? TileId; /// /// The sound that will be played when the action is performed /// [DataField] public SoundSpecifier? Audio; [DataField(customTypeSerializer: typeof(FlagSerializer))] public int BlockedCollisionMask; [DataField(customTypeSerializer: typeof(FlagSerializer))] public int BlockedCollisionLayer; } /// /// Event for placing a tile and/or spawning an entity at a specified position on the map with a delay. /// public sealed partial class PlaceTileEntityEvent : WorldTargetActionEvent { /// /// The prototype of the entity to be created /// [DataField] public EntProtoId? Entity; /// /// The identifier of the tile to be placed /// [DataField] public string? TileId; /// /// The sound that will be played when the action is performed /// [DataField] public SoundSpecifier? Audio; [DataField(customTypeSerializer: typeof(FlagSerializer))] public int BlockedCollisionMask; [DataField(customTypeSerializer: typeof(FlagSerializer))] public int BlockedCollisionLayer; /// /// The duration of the action in seconds /// [DataField] public float Length; } [Serializable, NetSerializable] public sealed partial class PlaceTileEntityDoAfterEvent : DoAfterEvent { public NetCoordinates Target; public EntProtoId? Entity; public string? TileId; public SoundSpecifier? Audio; public int BlockedCollisionMask; public int BlockedCollisionLayer; public FixedPoint2 PlasmaCost; // Goobstation public NetEntity Action; // Goobstation public override DoAfterEvent Clone() => this; }