A manifest class for bracket pipe parts in the editor. It declares kind, slot, hosts, label, glyph, subtool, and stage metadata and provides a Wide method that returns all bracket parts across buildings in a plan.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Sunless.Architecture;
public sealed class ArchBracketManifest : ArchKindManifest<ArchPipeBracketPart>, IArchReachesWide
{
public override ArchKind Kind => ArchKind.Bracket;
public override string Slot => "Brackets";
public override IEnumerable<Type> Hosts => new[] { typeof( ArchBuilding ) };
public override string Label => "Brackets";
public override string Glyph => ArchIcons.Get( "subtool_bracket", "build" );
public override string Subtool => ArchSubtools.Bracket;
public override ArchLayerStage Stage( object payload ) => ArchLayerStage.Fixture;
// A hanger is sized off the runs it overlaps, so it moves whenever they do.
public IEnumerable<object> Wide( ArchPlan plan )
{
return plan?.Buildings.SelectMany( building => building.Brackets ) ?? Array.Empty<ArchPipeBracketPart>();
}
}