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 put in a non-hand inventory slot, /// regardless of where it came from. This includes moving the entity from a hand slot into a non-hand slot /// (which would also fire ). /// /// This DOES NOT fire when putting the entity into a hand slot (), nor /// does it fire when putting the entity into held/equipped storage. /// [RequiresExplicitImplementation] public interface IEquipped { [Obsolete("Use EquippedMessage instead")] void Equipped(EquippedEventArgs eventArgs); } public abstract class UserEventArgs : EventArgs { public IEntity User { get; } protected UserEventArgs(IEntity user) { User = user; } } public class EquippedEventArgs : UserEventArgs { public EquippedEventArgs(IEntity user, EquipmentSlotDefines.Slots slot) : base(user) { Slot = slot; } public EquipmentSlotDefines.Slots Slot { get; } } /// /// Raised when equipping an entity in an inventory slot. /// [PublicAPI] public class EquippedEvent : HandledEntityEventArgs { /// /// Entity that equipped the item. /// public IEntity User { get; } /// /// Item that was equipped. /// public IEntity Equipped { get; } /// /// Slot that the item was placed into. /// public EquipmentSlotDefines.Slots Slot { get; } public EquippedEvent(IEntity user, IEntity equipped, EquipmentSlotDefines.Slots slot) { User = user; Equipped = equipped; Slot = slot; } } }