Extension methods for the editor ArchPlan type that locate tunnel and road parts. FindTunnel returns the ArchTunnelPart with a matching id by searching all roads' tunnels. RoadHolding returns the ArchRoadPart that contains a given tunnel.
using System.Linq;
namespace Sunless.Architecture;
public static class ArchPlanTunnels
{
public static ArchTunnelPart FindTunnel( this ArchPlan plan, int id ) =>
plan.Roads().SelectMany( road => road.Tunnels ).FirstOrDefault( tunnel => tunnel.Id == id );
public static ArchRoadPart RoadHolding( this ArchPlan plan, ArchTunnelPart tunnel ) =>
plan.Roads().FirstOrDefault( road => road.Tunnels.Contains( tunnel ) );
}