Editor/Pipe/ArchBracketManifest.cs
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>();
	}
}