1
0

DeleteEntitiesInContainer.cs 1004 B

1234567891011121314151617181920212223242526272829
  1. using System.Linq;
  2. using Content.Shared.Construction;
  3. using Robust.Server.Containers;
  4. using Robust.Shared.Containers;
  5. namespace Content.Server.Construction.Completions
  6. {
  7. [DataDefinition]
  8. public sealed partial class DeleteEntitiesInContainer : IGraphAction
  9. {
  10. [DataField("container")] public string Container { get; private set; } = string.Empty;
  11. public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager)
  12. {
  13. if (string.IsNullOrEmpty(Container))
  14. return;
  15. var containerSys = entityManager.EntitySysManager.GetEntitySystem<ContainerSystem>();
  16. if (!containerSys.TryGetContainer(uid, Container, out var container))
  17. return;
  18. foreach (var contained in container.ContainedEntities.ToArray())
  19. {
  20. if(containerSys.Remove(contained, container))
  21. entityManager.QueueDeleteEntity(contained);
  22. }
  23. }
  24. }
  25. }