1
0

EmptyOrWindowValidInTile.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Content.Shared.Maps;
  2. using JetBrains.Annotations;
  3. using Robust.Shared.Map;
  4. namespace Content.Shared.Construction.Conditions
  5. {
  6. [UsedImplicitly]
  7. [DataDefinition]
  8. public sealed partial class EmptyOrWindowValidInTile : IConstructionCondition
  9. {
  10. [DataField("tileNotBlocked")]
  11. private TileNotBlocked _tileNotBlocked = new();
  12. public bool Condition(EntityUid user, EntityCoordinates location, Direction direction)
  13. {
  14. var result = false;
  15. foreach (var entity in location.GetEntitiesInTile(LookupFlags.Approximate | LookupFlags.Static))
  16. {
  17. if (IoCManager.Resolve<IEntityManager>().HasComponent<SharedCanBuildWindowOnTopComponent>(entity))
  18. result = true;
  19. }
  20. if (!result)
  21. result = _tileNotBlocked.Condition(user, location, direction);
  22. return result;
  23. }
  24. public ConstructionGuideEntry GenerateGuideEntry()
  25. {
  26. return new ConstructionGuideEntry
  27. {
  28. Localization = "construction-guide-condition-empty-or-window-valid-in-tile"
  29. };
  30. }
  31. }
  32. }