using System; using Content.Shared.GameObjects.Components.Inventory; using Content.Shared.GameObjects.Components.Items; using JetBrains.Annotations; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; namespace Content.Shared.Interfaces.GameObjects.Components { /// /// This interface gives components behavior when their entity is put in a hand inventory slot, /// even if it came from another hand slot (which would also fire ). /// This includes moving the entity from a non-hand slot into a hand slot /// (which would also fire ). /// public interface IEquippedHand { void EquippedHand(EquippedHandEventArgs eventArgs); } public class EquippedHandEventArgs : UserEventArgs { public EquippedHandEventArgs(IEntity user, SharedHand hand) : base(user) { Hand = hand; } public SharedHand Hand { get; } } /// /// Raised when putting the entity into a hand slot /// [PublicAPI] public class EquippedHandMessage : EntitySystemMessage { /// /// If this message has already been "handled" by a previous system. /// public bool Handled { get; set; } /// /// Entity that equipped the item. /// public IEntity User { get; } /// /// Item that was equipped. /// public IEntity Equipped { get; } /// /// Hand the item is going into. /// public SharedHand Hand { get; } public EquippedHandMessage(IEntity user, IEntity equipped, SharedHand hand) { User = user; Equipped = equipped; Hand = hand; } } }