using JetBrains.Annotations; using Robust.Shared.GameObjects; using Robust.Shared.Map; namespace Content.Shared.Interaction { /// /// Raised directed on the used object when clicking on another object before an interaction is handled. /// [PublicAPI] public class BeforeInteractEvent : HandledEntityEventArgs { /// /// Entity that triggered the interaction. /// public IEntity User { get; } /// /// Entity that triggered the interaction. /// public EntityUid UserUid => User.Uid; /// /// Entity that the user used to interact. /// public IEntity Used { get; } /// /// Entity that the user used to interact. /// public EntityUid UsedUid => Used.Uid; /// /// Entity that was interacted on. This can be null if the attack did not click on an entity. /// public IEntity? Target { get; } /// /// Entity that was interacted on. This can be null if the attack did not click on an entity. /// public EntityUid? TargetUid => Target?.Uid; /// /// Location that the user clicked outside of their interaction range. /// public EntityCoordinates ClickLocation { get; } /// /// Is the click location close enough to reach by the player? This does not check for obstructions, just that the target is within /// reach radius around the user. /// public bool CanReach { get; } public BeforeInteractEvent( IEntity user, IEntity used, IEntity? target, EntityCoordinates clickLocation, bool canReach) { User = user; Used = used; Target = target; ClickLocation = clickLocation; CanReach = canReach; } } }