private bool CanPull(EntityUid entity) { return(!(EntityManager.HasComponent <GhostComponent>(entity) || EntityManager.HasComponent <IMapGridComponent>(entity) || EntityManager.HasComponent <MapComponent>(entity) || entity.IsInContainer())); }
public override Outcome Execute(float frameTime) { var entMan = IoCManager.Resolve <IEntityManager>(); if (entMan.Deleted(_target) || !entMan.HasComponent <SharedItemComponent>(_target) || _target.IsInContainer() || !_owner.InRangeUnobstructed(_target, popup: true)) { return(Outcome.Failed); } if (!entMan.TryGetComponent(_owner, out HandsComponent? handsComponent)) { return(Outcome.Failed); } var emptyHands = false; foreach (var hand in handsComponent.ActivePriorityEnumerable()) { if (handsComponent.GetItem(hand) == null) { if (handsComponent.ActiveHand != hand) { handsComponent.ActiveHand = hand; } emptyHands = true; break; } } if (!emptyHands) { return(Outcome.Failed); } var interactionSystem = EntitySystem.Get <InteractionSystem>(); interactionSystem.InteractHand(_owner, _target); return(Outcome.Success); }
public override Outcome Execute(float frameTime) { var entMan = IoCManager.Resolve <IEntityManager>(); var sysMan = IoCManager.Resolve <IEntitySystemManager>(); var interactionSystem = sysMan.GetEntitySystem <InteractionSystem>(); var handsSys = sysMan.GetEntitySystem <SharedHandsSystem>(); if (entMan.Deleted(_target) || !entMan.HasComponent <SharedItemComponent>(_target) || _target.IsInContainer() || !interactionSystem.InRangeUnobstructed(_owner, _target, popup: true)) { return(Outcome.Failed); } // select empty hand if (!handsSys.TrySelectEmptyHand(_owner)) { return(Outcome.Failed); } interactionSystem.InteractHand(_owner, _target); return(Outcome.Success); }