Editor/Layers/ArchKindReserved.cs

A partial record struct that defines a set of named ArchKind constants used as identifiers for architectural plan manifests. It supplies many predefined ArchKind instances (e.g., Building, Room, Stair, Roof, Bridge) for convenience.

namespace Sunless.Architecture;

// The idents already written into plans on disk. Two manifests claiming one would silently adopt each other's
// authored parts, which ArchKinds refuses rather than deciding by the order they were written in.
//
// These are conveniences, not a set: nothing consults this list to decide what exists, and a kind can be minted
// with new ArchKind( ident ).
public readonly partial record struct ArchKind
{
	public static readonly ArchKind Building = new( "Building" );
	public static readonly ArchKind Story = new( "Story" );
	public static readonly ArchKind Room = new( "Room" );
	public static readonly ArchKind Walkway = new( "Walkway" );
	public static readonly ArchKind Wall = new( "Wall" );
	public static readonly ArchKind Opening = new( "Opening" );
	public static readonly ArchKind Stair = new( "Stair" );
	// One kind for both a flight and a platform, because they are one payload: a manifest claims a type, and a
	// second one claiming ArchStairLane would be refused rather than take half of them.
	public static readonly ArchKind StairStep = new( "StairStep" );
	public static readonly ArchKind StairGuard = new( "StairGuard" );
	public static readonly ArchKind CarvedStair = new( "CarvedStair" );
	public static readonly ArchKind Trim = new( "Trim" );
	public static readonly ArchKind Pillar = new( "Pillar" );
	public static readonly ArchKind Span = new( "Span" );
	public static readonly ArchKind Porch = new( "Porch" );
	public static readonly ArchKind Approach = new( "Approach" );
	public static readonly ArchKind Roof = new( "Roof" );
	public static readonly ArchKind RoofLight = new( "RoofLight" );
	public static readonly ArchKind Platform = new( "Platform" );
	public static readonly ArchKind Downpipe = new( "Downpipe" );
	public static readonly ArchKind Fence = new( "Fence" );
	public static readonly ArchKind Ladder = new( "Ladder" );
	public static readonly ArchKind Cut = new( "Cut" );
	public static readonly ArchKind Road = new( "Road" );
	public static readonly ArchKind Crossing = new( "Crossing" );
	public static readonly ArchKind Bridge = new( "Bridge" );
	public static readonly ArchKind Tunnel = new( "Tunnel" );
	public static readonly ArchKind Assembly = new( "Assembly" );
	public static readonly ArchKind AssetInstance = new( "AssetInstance" );
	public static readonly ArchKind WallMod = new( "WallMod" );
	public static readonly ArchKind Beam = new( "Beam" );
	public static readonly ArchKind Balcony = new( "Balcony" );
	public static readonly ArchKind ExteriorStair = new( "ExteriorStair" );
	public static readonly ArchKind Pipe = new( "Pipe" );
	public static readonly ArchKind Bracket = new( "Bracket" );
}