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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
namespace XFEEDToolBox.Plugin;

internal static unsafe partial class Navigation
{
    private static uint LocalDockingHandoffSelfTest()
    {
        uint passed=0;
        if(LocalDockingZeroConfirmed(true,false,.5f,.75))passed|=1;
        if(!LocalDockingZeroConfirmed(false,false,0,0))passed|=2;
        if(!LocalDockingZeroConfirmed(false,true,.5f,0))passed|=4;
        // Regression: a zero controller and old input receipt did not prove
        // that the actual .75 SCA throttle had reached zero.
        if(!LocalDockingZeroConfirmed(false,true,0,.75))passed|=8;
        if(LocalDockingZeroConfirmed(false,true,0,0))passed|=16;
        if(!LocalDockingZeroConfirmed(false,true,0,double.NaN))passed|=32;
        if(!LocalDockingZeroConfirmed(false,true,0,double.PositiveInfinity))passed|=64;
        var memory=Platform.Allocate(8192);if(memory==0)return passed;
        var saved=(dockingZeroAxisRoot,dockingZeroAxisVersion,dockingZeroAxisCommits,dockingZeroAxisRestoresSkipped);
        try
        {
            var root=memory;var controller=memory+4096;
            void Reset(){Write(root+0x2F8,controller);Write(root+0x70,.75f);Write(root+0x80,.2f);Write(controller+0x680,0f);}
            Reset();if(CommitOriginalDockingZeroAxis(root,controller,.75f,true,true,out var changed)&&changed&&Read<float>(root+0x70)==0&&Read<float>(root+0x80)==.2f)passed|=128;
            Reset();Write(root+0x70,.5f);if(!CommitOriginalDockingZeroAxis(root,controller,.75f,true,true,out _)&&Read<float>(root+0x70)==.5f)passed|=256;
            Reset();if(!CommitOriginalDockingZeroAxis(root,controller,.75f,false,true,out _)&&Read<float>(root+0x70)==.75f)passed|=512;
            Reset();if(!CommitOriginalDockingZeroAxis(root,controller,.75f,true,false,out _)&&Read<float>(root+0x70)==.75f)passed|=1024;
            Reset();Write(controller+0x680,.1f);if(!CommitOriginalDockingZeroAxis(root,controller,.75f,true,true,out _)&&Read<float>(root+0x70)==.75f)passed|=2048;
            Reset();Write(root+0x2F8,controller+8);if(!CommitOriginalDockingZeroAxis(root,controller,.75f,true,true,out _)&&Read<float>(root+0x70)==.75f)passed|=4096;
            Reset();if(!CommitOriginalDockingZeroAxis(root,controller,float.NaN,true,true,out _))passed|=8192;
            Reset();Write(root+0x70,0f);if(CommitOriginalDockingZeroAxis(root,controller,.75f,true,true,out changed)&&!changed)passed|=16384;
            if(!CommitOriginalDockingZeroAxis(0,controller,0,true,true,out _))passed|=32768;
            Reset();var outer=dockingZeroAxisVersion;
            CommitOriginalDockingZeroAxis(root,controller,.75f,true,true,out _);
            RestoreOverlayAxis(root,0,.75f,0,outer);
            if(Read<float>(root+0x70)==0)passed|=65536;
            RestoreOverlayAxis(root,0,.75f,0,outer);
            if(Read<float>(root+0x70)==0)passed|=131072;
            Write(root+0x80,0f);RestoreOverlayAxis(root,1,.2f,0,outer);
            if(Read<float>(root+0x80)==.2f)passed|=262144;
            Write(root+0x70,.3f);RestoreOverlayAxis(root,0,.75f,0,outer);
            if(Read<float>(root+0x70)==.3f)passed|=524288;
            Write(root+0x70,0f);RestoreOverlayAxis(root,0,.4f,0,dockingZeroAxisVersion);
            if(Read<float>(root+0x70)==.4f)passed|=1048576;
            var other=root+256;Write(other+0x70,0f);RestoreOverlayAxis(other,0,.6f,0,outer);
            if(Read<float>(other+0x70)==.6f)passed|=2097152;
            Reset();Write(root+0x70,0f);outer=dockingZeroAxisVersion;
            if(CommitOriginalDockingZeroAxis(root,controller,0,true,true,out changed)&&!changed&&dockingZeroAxisVersion!=outer)passed|=4194304;
            RestoreOverlayAxis(root,0,.75f,0,outer);
            if(Read<float>(root+0x70)==0)passed|=8388608;
        }
        finally{(dockingZeroAxisRoot,dockingZeroAxisVersion,dockingZeroAxisCommits,dockingZeroAxisRestoresSkipped)=saved;Platform.Free(memory);}
        return passed;
    }
#if PLUGIN_NAVIGATION
    [UnmanagedCallersOnly(EntryPoint="XFENavigationLocalDockingHandoffSelfTest")]
    internal static uint ExportLocalDockingHandoffSelfTest()=>RunTest(LocalDockingHandoffSelfTest);
#endif
}