Editor/Tool/ArchExteriorStairs.cs

Editor-side interface and static accessor for exterior stair placement in an architecture tool. Defines IArchExteriorStairs with Preview and Place methods, and a static ArchExteriorStairs helper that resolves an implementation via ArchRoles.One<T>() and forwards calls.

Reflection
namespace Sunless.Architecture;

public interface IArchExteriorStairs
{
	bool Preview( ArchPlan plan, ArchKit kit, ArchFixtureStation? at, ArchExteriorStairPart draft );

	ArchExteriorStairPart Place( ArchPlan plan, ArchKit kit, ArchFixtureStation? at, ArchExteriorStairPart draft, out ArchBuilding host );
}

public static class ArchExteriorStairs
{
	static IArchExteriorStairs Load() => ArchRoles.One<IArchExteriorStairs>();

	public static bool Preview( ArchPlan plan, ArchKit kit, ArchFixtureStation? at, ArchExteriorStairPart draft )
	{
		return Load()?.Preview( plan, kit, at, draft ) == true;
	}

	public static ArchExteriorStairPart Place( ArchPlan plan, ArchKit kit, ArchFixtureStation? at, ArchExteriorStairPart draft, out ArchBuilding host )
	{
		var stairs = Load();

		if ( stairs is null )
		{
			host = null;
			return null;
		}

		return stairs.Place( plan, kit, at, draft, out host );
	}
}