using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Utility; namespace Content.Shared.Tools.Components { [RegisterComponent, NetworkedComponent] // TODO move tool system to shared, and make it a friend. public sealed class ToolComponent : Component { [DataField("qualities")] public PrototypeFlags Qualities { get; set; } = new(); /// /// For tool interactions that have a delay before action this will modify the rate, time to wait is divided by this value /// [ViewVariables(VVAccess.ReadWrite)] [DataField("speed")] public float SpeedModifier { get; set; } = 1; [DataField("useSound")] public SoundSpecifier? UseSound { get; set; } } /// /// Attempt event called *before* any do afters to see if the tool usage should succeed or not. /// You can change the fuel consumption by changing the Fuel property. /// public sealed class ToolUseAttemptEvent : CancellableEntityEventArgs { public float Fuel { get; set; } public EntityUid User { get; } public ToolUseAttemptEvent(float fuel, EntityUid user) { Fuel = fuel; User = user; } } /// /// Event raised on the user of a tool to see if they can actually use it. /// [ByRefEvent] public struct ToolUserAttemptUseEvent { public EntityUid? Target; public bool Cancelled = false; public ToolUserAttemptUseEvent(EntityUid? target) { Target = target; } } }