NoUnstackableInTile.cs 1018 B

12345678910111213141516171819202122232425262728293031
  1. using Content.Shared.Construction.EntitySystems;
  2. using JetBrains.Annotations;
  3. using Robust.Shared.Map;
  4. namespace Content.Shared.Construction.Conditions;
  5. /// <summary>
  6. /// Check for "Unstackable" condition commonly used by atmos devices and others which otherwise don't check on
  7. /// collisions with other items.
  8. /// </summary>
  9. [UsedImplicitly]
  10. [DataDefinition]
  11. public sealed partial class NoUnstackableInTile : IConstructionCondition
  12. {
  13. public const string GuidebookString = "construction-step-condition-no-unstackable-in-tile";
  14. public bool Condition(EntityUid user, EntityCoordinates location, Direction direction)
  15. {
  16. var sysMan = IoCManager.Resolve<IEntitySystemManager>();
  17. var anchorable = sysMan.GetEntitySystem<AnchorableSystem>();
  18. return !anchorable.AnyUnstackablesAnchoredAt(location);
  19. }
  20. public ConstructionGuideEntry GenerateGuideEntry()
  21. {
  22. return new ConstructionGuideEntry
  23. {
  24. Localization = GuidebookString
  25. };
  26. }
  27. }