using System.Threading; using Content.Shared.Damage; using Robust.Shared.Audio; namespace Content.Server.Gatherable.Components { /// /// When interacting with an allows it to spawn entities. /// [RegisterComponent] public sealed class GatheringToolComponent : Component { /// /// Sound that is made once you completed gathering /// [ViewVariables(VVAccess.ReadWrite)] [DataField("sound")] public SoundSpecifier GatheringSound { get; set; } = new SoundPathSpecifier("/Audio/Items/Mining/pickaxe.ogg"); /// /// This directly plugs into the time delay for gathering. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("gatheringTime")] public float GatheringTime { get; set; } = 1f; /// /// What damage should be given to objects when /// gathered using this tool? (0 for infinite gathering) /// [DataField("damage", required: true)] public DamageSpecifier Damage { get; set; } = default!; /// /// How many entities can this tool gather from at once? /// [ViewVariables(VVAccess.ReadWrite)] [DataField("maxEntities")] public int MaxGatheringEntities = 1; [ViewVariables] public readonly Dictionary GatheringEntities = new(); } }