using System.Text.Json; namespace XFEEDToolBox.Core.Navigation; public sealed partial class NativeSystemFlightControlDriver { public void ConfirmDockingValidationLaunchCompleted() { if(player().Docked||last is null||LastTelemetry is not {} value||NativeSystemFlightObservation.LaunchNeedsCancellation(value.GetProperty("docking"))) throw new InvalidOperationException("Original launch duty has not completed."); ownsLaunch=false; } public async Task BeginDockingValidation075Async(string trialId,CancellationToken token) { if(ensureFlightProtection is not null)await ensureFlightProtection(token); await pipe.CallAsync(new{op="local.axes.release",owner,generation},token); await Task.Delay(60,token);var frame=await ReadSystemFlightAsync(token); if(frame.Mode!=LocalFlightMode.Normal||frame.SupercruiseAssist==NativeAssistState.Engaged||player().CargoCount!=0) throw new InvalidOperationException("Empty normal-space ship required for diagnostic."); return await pipe.CallAsync(new{op="docking.validation.arm",owner,generation,sequence=frame.Sequence,trialId},token); } public Task ReadDockingValidationAsync(string trialId,CancellationToken token) =>pipe.CallAsync(new{op="docking.validation.status",owner,generation,trialId},token); public Task CancelDockingValidationAsync(string trialId,CancellationToken token) =>pipe.CallAsync(new{op="docking.validation.cancel",owner,generation,trialId},token); }