using System; using JetBrains.Annotations; using Robust.Shared.Analyzers; using Robust.Shared.GameObjects; namespace Content.Shared.Interaction { /// /// This interface gives components behavior when being clicked on by a user with an empty hand /// who is in range and has unobstructed reach of the target entity (allows inside blockers). /// [RequiresExplicitImplementation] public interface IInteractHand { /// /// Called when a player directly interacts with an empty hand when user is in range of the target entity. /// [Obsolete("Use InteractHandEvent instead")] bool InteractHand(InteractHandEventArgs eventArgs); } public class InteractHandEventArgs : EventArgs, ITargetedInteractEventArgs { public InteractHandEventArgs(IEntity user, IEntity target) { User = user; Target = target; } public IEntity User { get; } public IEntity Target { get; } } /// /// Raised directed on a target entity when it is interacted with by a user with an empty hand. /// [PublicAPI] public class InteractHandEvent : HandledEntityEventArgs, ITargetedInteractEventArgs { /// /// Entity that triggered the interaction. /// public IEntity User { get; } /// /// Entity that triggered the interaction. /// public EntityUid UserUid => User.Uid; /// /// Entity that was interacted on. /// public IEntity Target { get; } /// /// Entity that was interacted on. /// public EntityUid TargetUid => Target.Uid; public InteractHandEvent(IEntity user, IEntity target) { User = user; Target = target; } } }