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

namespace Sunless.Architecture;

public sealed class ArchCrossingManifest : ArchKindManifest {
	public override ArchKind Kind => ArchKind.Crossing;

	public override Type Payload => typeof( ArchRoadCrossing );

	public override string Slot => "Crossings";

	public override IEnumerable<Type> Hosts => new[] { typeof( ArchRoadPart ) };

	public override ArchLayerDomain Domain => ArchLayerDomain.Infrastructure;

	public override string Label => "Crossing";

	public override string Glyph => "alt_route";

	public override string Subtool => ArchSubtools.Crossing;

	public override int DirectRank => 17;

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

	public override string NameOf( object payload, int id ) {
		return payload is ArchRoadCrossing crossing ? crossing.Name : base.NameOf( payload, id );
	}

	public override bool TryRename( object payload, string name ) {
		if ( string.IsNullOrWhiteSpace( name ) || payload is not ArchRoadCrossing crossing ) {
			return false;
		}

		crossing.Name = name;

		return true;
	}

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

		return road.Crossings;
	}
}