XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
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);
}