using System; using Content.Shared.Hands; using JetBrains.Annotations; using Robust.Shared.Analyzers; using Robust.Shared.GameObjects; namespace Content.Shared.Inventory { /// /// This interface gives components behavior when their entity is removed from a non-hand inventory slot, /// regardless of where it's going to. This includes moving the entity from a non-hand slot into a hand slot /// (which would also fire ). /// /// This DOES NOT fire when removing the entity from a hand slot (), nor /// does it fire when removing the entity from held/equipped storage. /// [RequiresExplicitImplementation] public interface IUnequipped { [Obsolete("Use UnequippedMessage instead")] void Unequipped(UnequippedEventArgs eventArgs); } public class UnequippedEventArgs : UserEventArgs { public UnequippedEventArgs(IEntity user, EquipmentSlotDefines.Slots slot) : base(user) { Slot = slot; } public EquipmentSlotDefines.Slots Slot { get; } } /// /// Raised when removing an entity from an inventory slot. /// [PublicAPI] public class UnequippedEvent : HandledEntityEventArgs { /// /// Entity that equipped the item. /// public IEntity User { get; } /// /// Item that was unequipped. /// public IEntity Unequipped { get; } /// /// Slot that the item was removed from. /// public EquipmentSlotDefines.Slots Slot { get; } public UnequippedEvent(IEntity user, IEntity unequipped, EquipmentSlotDefines.Slots slot) { User = user; Unequipped = unequipped; Slot = slot; } } }