Editor/Road/ArchRoadManifest.cs
using System;
using System.Collections.Generic;

namespace Sunless.Architecture;

public sealed class ArchRoadManifest : ArchKindManifest<ArchRoadPart> {
	public override ArchKind Kind => ArchKind.Road;

	// A road is a unit standing on the map beside the houses, so it is filed at the plan root and hosted by nothing.
	public override string Slot => "Units";

	public override ArchLayerDomain Domain => ArchLayerDomain.Infrastructure;

	public override string Label => "Road";

	public override string Glyph => "route";

	public override string Subtool => ArchSubtools.Road;

	public override bool RootsAtPlan => true;

	public override string HostOutput => "Road curve and section";

	public override IEnumerable<ArchKind> Children => new[]
	{
		ArchKind.Crossing, ArchKind.Bridge, ArchKind.Tunnel, ArchKind.Fence, ArchKind.Cut
	};

	public override int DirectRank => 21;

	public override ArchLayerStage Stage( object payload ) => ArchLayerStage.Shape;

	public override IEnumerable<object> Filed( ArchPlan plan, object host ) {
		if ( plan is null || host is not null ) {
			return Array.Empty<object>();
		}

		return plan.Roads();
	}
}