Editor/Porch/ArchPorchEffects.cs
namespace Sunless.Architecture;

public sealed class ArchPorchEffects : IArchAffector {
	public ArchKind Kind => ArchKind.Porch;

	public int Order => 30;

	public int Resolve( ArchPlan plan, ArchKit kit ) => ArchPorchAffector.Resolve( plan, kit );

	public bool Closes( object payload ) => payload is ArchPorchPart;

	public void Close( ArchPlan plan, object payload ) {
		if ( plan is null || payload is not ArchPorchPart porch ) {
			return;
		}

		var room = plan.AllRooms().FirstOrDefault( candidate => candidate.Porches.Contains( porch ) );
		var building = room is null ? null : plan.OwnerOf( room );

		if ( building is null ) {
			return;
		}

		ArchPorchAffector.Close( building, porch );
		ArchPorchCover.Remove( plan, building, porch );
	}
}