using System.Linq; using Content.Shared.Construction.Components; using Robust.Shared.Map; using Robust.Shared.Prototypes; using static Content.Shared.Interaction.SharedInteractionSystem; namespace Content.Shared.Construction { public abstract class SharedConstructionSystem : EntitySystem { [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] protected readonly IPrototypeManager PrototypeManager = default!; /// /// Get predicate for construction obstruction checks. /// public Ignored? GetPredicate(bool canBuildInImpassable, MapCoordinates coords) { if (!canBuildInImpassable) return null; if (!_mapManager.TryFindGridAt(coords, out _, out var grid)) return null; var ignored = grid.GetAnchoredEntities(coords).ToHashSet(); return e => ignored.Contains(e); } public string GetExamineName(GenericPartInfo info) { if (info.ExamineName is not null) return Loc.GetString(info.ExamineName.Value); return PrototypeManager.Index(info.DefaultPrototype).Name; } } }