TileNotBlocked.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Content.Shared.Maps;
  2. using JetBrains.Annotations;
  3. using Robust.Shared.Map;
  4. namespace Content.Shared.Construction.Conditions;
  5. [UsedImplicitly]
  6. [DataDefinition]
  7. public sealed partial class TileNotBlocked : IConstructionCondition
  8. {
  9. [DataField("filterMobs")] private bool _filterMobs = false;
  10. [DataField("failIfSpace")] private bool _failIfSpace = true;
  11. [DataField("failIfNotSturdy")] private bool _failIfNotSturdy = true;
  12. public bool Condition(EntityUid user, EntityCoordinates location, Direction direction)
  13. {
  14. var tileRef = location.GetTileRef();
  15. if (tileRef == null)
  16. {
  17. return false;
  18. }
  19. if (tileRef.Value.IsSpace() && _failIfSpace)
  20. {
  21. return false;
  22. }
  23. if (!tileRef.Value.GetContentTileDefinition().Sturdy && _failIfNotSturdy)
  24. {
  25. return false;
  26. }
  27. return !tileRef.Value.IsBlockedTurf(_filterMobs);
  28. }
  29. public ConstructionGuideEntry GenerateGuideEntry()
  30. {
  31. return new ConstructionGuideEntry
  32. {
  33. Localization = "construction-step-condition-tile-not-blocked",
  34. };
  35. }
  36. }