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;
}
}