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<JsonElement> 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<JsonElement> ReadDockingValidationAsync(string trialId,CancellationToken token)
=>pipe.CallAsync(new{op="docking.validation.status",owner,generation,trialId},token);
public Task<JsonElement> CancelDockingValidationAsync(string trialId,CancellationToken token)
=>pipe.CallAsync(new{op="docking.validation.cancel",owner,generation,trialId},token);
}
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<JsonElement> 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<JsonElement> ReadDockingValidationAsync(string trialId,CancellationToken token)
=>pipe.CallAsync(new{op="docking.validation.status",owner,generation,trialId},token);
public Task<JsonElement> CancelDockingValidationAsync(string trialId,CancellationToken token)
=>pipe.CallAsync(new{op="docking.validation.cancel",owner,generation,trialId},token);
}