using Content.Shared.DoAfter; using Content.Shared.Storage.EntitySystems; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Storage.Components; [Serializable, NetSerializable] public sealed partial class DumpableDoAfterEvent : SimpleDoAfterEvent { } /// /// Lets you dump this container on the ground using a verb, /// or when interacting with it on a disposal unit or placeable surface. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class DumpableComponent : Component { [ViewVariables(VVAccess.ReadWrite), DataField("soundDump"), AutoNetworkedField] public SoundSpecifier? DumpSound = new SoundCollectionSpecifier("storageRustle"); /// /// How long each item adds to the doafter. /// [DataField("delayPerItem"), AutoNetworkedField] public TimeSpan DelayPerItem = TimeSpan.FromSeconds(SharedStorageSystem.AreaInsertDelayPerItem); /// /// The multiplier modifier /// [DataField("multiplier"), AutoNetworkedField] public float Multiplier = 1.0f; } /// /// Event raised on Dumpable entities to get the verb for dumping /// [ByRefEvent] public record struct GetDumpableVerbEvent(EntityUid User, string? Verb); /// /// Event raised on Dumpable entities to complete the dump /// [ByRefEvent] public record struct DumpEvent(Queue DumpQueue, EntityUid User, bool PlaySound, bool Handled);