TileType.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Content.Shared.Maps;
  2. using JetBrains.Annotations;
  3. using Robust.Shared.Map;
  4. using Robust.Shared.Utility;
  5. namespace Content.Shared.Construction.Conditions
  6. {
  7. [UsedImplicitly]
  8. [DataDefinition]
  9. public sealed partial class TileType : IConstructionCondition
  10. {
  11. [DataField("targets")]
  12. public List<string> TargetTiles { get; private set; } = new();
  13. [DataField("guideText")]
  14. public string? GuideText;
  15. [DataField("guideIcon")]
  16. public SpriteSpecifier? GuideIcon;
  17. public bool Condition(EntityUid user, EntityCoordinates location, Direction direction)
  18. {
  19. var tileFound = location.GetTileRef();
  20. if (tileFound == null)
  21. return false;
  22. var tile = tileFound.Value.Tile.GetContentTileDefinition();
  23. foreach (var targetTile in TargetTiles)
  24. {
  25. if (tile.ID == targetTile)
  26. return true;
  27. }
  28. return false;
  29. }
  30. public ConstructionGuideEntry? GenerateGuideEntry()
  31. {
  32. if (GuideText == null)
  33. return null;
  34. return new ConstructionGuideEntry()
  35. {
  36. Localization = GuideText,
  37. Icon = GuideIcon,
  38. };
  39. }
  40. }
  41. }