Editor manifest class describing the Crossing kind for the architecture editor. It declares metadata for ArchRoadCrossing payloads, including slot, label, glyph, hosting types, domain, rank, naming and renaming behavior, and how to list crossings from a road host.
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;
}
}