using Content.Shared.DoAfter; using Content.Shared.Maps; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared._CP14.SpawnOnTileTool; /// /// Allows using an item on a certain type of tile to spawn entities on it. /// [RegisterComponent, Access(typeof(SharedCP14SpawnOnTileToolSystem))] public sealed partial class CP14SpawnOnTileToolComponent : Component { [DataField] public Dictionary, EntProtoId> Spawns = new(); [DataField] public bool NeedEmptySpace = true; [DataField] public TimeSpan DoAfter = TimeSpan.FromSeconds(1f); } [Serializable, NetSerializable] public sealed partial class SpawnOnTileToolAfterEvent : DoAfterEvent { public override DoAfterEvent Clone() => this; public readonly NetCoordinates Coordinates; public readonly EntProtoId Spawn; public SpawnOnTileToolAfterEvent(IEntityManager entManager, EntityCoordinates coord, EntProtoId spawn) { Spawn = spawn; Coordinates = entManager.GetNetCoordinates(coord); } public SpawnOnTileToolAfterEvent(NetCoordinates coord, EntProtoId spawn) { Spawn = spawn; Coordinates = coord; } }