using System.Text.Json; using XFEEDToolBox.Controls; using XFEEDToolBox.Core.Galaxy; using XFEEDToolBox.Core.Models; namespace XFEEDToolBox; public partial class App { private static async Task RunGalaxyPowerRingProbeAsync(string directory,IReadOnlyList recorded) { static void Require(bool value,string message){if(!value)throw new InvalidOperationException(message);} var actual=recorded.First(s=>s.SystemAddress is >0&&s.Position.IsValid); var other=recorded.First(s=>s.SystemAddress is >0&&s.SystemAddress!=actual.SystemAddress&&s.Position.IsValid); const float radius=5.775f; GalacticSystem Fixture(GalacticSystem row,string fid,bool visible=true)=>row with{Data=row.Data with{ AccountFid=fid,NativeFilterFacts=new GalaxyNativeSystemFacts(fid,Environment.ProcessId,actual.SystemAddress!.Value) {PowerOuter=new(visible,row.SystemAddress,row.Position,radius)}}}; var target=Fixture(actual,"explicit-synthetic-power-ring"); var previous=MainWindow.Content;var host=new Grid();var map=new GalaxyMapView();host.Children.Add(map);MainWindow.Content=host; var observations=new Dictionary(); async Task Save(string name) { map.RenderNowForProbe();var frame=map.CapturePixelsForProbe();var peak=0;var nonBlack=0; for(var i=0;i0)nonBlack++;} observations[name]=new{frame.Width,frame.Height,prepared=map.PreparedPowerActivityRingsForProbe,submitted=map.SubmittedPowerActivityRingsForProbe, sourceUnknown=map.PowerActivityRingSourceUnknownForProbe,exposureState=map.OriginalExposureStateForProbe, type2Emissive=map.OriginalType2ExposureForProbe,exposureDispatches=map.OriginalExposureDispatchesForProbe, usesToolComputedExposure=map.PowerActivityRingUsesToolExposureForProbe,gpuPeakRgb=peak,gpuNonBlackPixels=nonBlack, submittedBillboards=map.SubmittedPowerActivityBillboardsForProbe, submissionIsNotPixelVisibility=true}; using(await map.FreezeForXamlProbeAsync())await CaptureRefinementElementAsync(host,Path.Combine(directory,name+".png")); } try { var activities=GalaxyMapFilter.Default with{Mode=GalaxyMapMode.Powerplay,PowerplayView=GalaxyPowerplayView.Activities, Category=GalaxyFilterCategory.Power,Values=null,IncludeUnknown=false,ShowBackground=false,ShowGrid=false,ShowLinks=false, ShowRoute=false,ShowMarkers=false,ShowConstellations=false,ShowCurrentTradeFlows=false,ShowHistoricalTradeFlows=false, ShowRegionNames=false,ShowNebulaNames=false,ShowGalacticZonesPlane=false,ShowGalacticZoneNames=false}; map.Filter=activities;map.Systems=[target];await Task.Delay(180); map.SetCameraPoseForProbe(new(actual.Position,0,.9,24));map.RenderNowForProbe(); Require(map.PreparedPowerActivityRingsForProbe==1&&map.SubmittedPowerActivityRingsForProbe==1&& !map.PowerActivityRingSourceUnknownForProbe&&map.PowerActivityRingUsesToolExposureForProbe&& map.OriginalExposureStateForProbe=="ManualComputed"&&map.OriginalType2ExposureForProbe is{} exposure&&MathF.Abs(exposure-.53827727f)<.000001f, "The coherent synthetic PowerOuter facts did not reach Main's ring buffer with this view's original manual exposure result."); var dispatches=map.OriginalExposureDispatchesForProbe;map.RenderNowForProbe();map.RenderNowForProbe(); Require(dispatches>0&&map.OriginalExposureDispatchesForProbe==dispatches,"Unchanged manual controls dispatched the original exposure compute again."); await Save("range-ring"); GalacticSystem WithExtent(float? extent)=>target with{Data=target.Data with{NativeFilterFacts=target.Data.NativeFilterFacts! with{ PowerOuter=target.Data.NativeFilterFacts!.PowerOuter! with{Extent=extent}}}}; map.Systems=[WithExtent(4)];map.RenderNowForProbe(); Require(map.SubmittedPowerActivityBillboardsForProbe==1&&map.SubmittedPowerActivityRingsForProbe==1,"A known independent extent did not submit its camera-facing outline."); await Save("activity-outline-near"); foreach(var extent in new float?[]{null,0,30}) {map.Systems=[WithExtent(extent)];map.RenderNowForProbe();Require(map.SubmittedPowerActivityBillboardsForProbe==0,"Missing/zero extent or an eye inside it retained a billboard.");} var otherExtent=other with{Data=target.Data}; otherExtent=otherExtent with{Data=otherExtent.Data with{NativeFilterFacts=otherExtent.Data.NativeFilterFacts! with{ PowerOuter=otherExtent.Data.NativeFilterFacts!.PowerOuter! with{Extent=5}}}}; map.Systems=[WithExtent(4),otherExtent];map.RenderNowForProbe(); Require(map.FilteredModels==2&&map.SubmittedPowerActivityRingsForProbe==1&&map.SubmittedPowerActivityBillboardsForProbe==0,"Conflicting extents selected an arbitrary outline or erased the coherent range ring."); map.Systems=[target]; map.Filter=activities with{Mode=GalaxyMapMode.Realistic};map.RenderNowForProbe(); Require(map.PreparedPowerActivityRingsForProbe==0&&map.SubmittedPowerActivityRingsForProbe==0,"The default realistic view retained the Activities range ring."); // This is the ordinary default view comparison, not an assertion // that the exposure resource remained in DefaultCreated state. await Save("range-ring-default"); map.Filter=activities with{PowerplayView=GalaxyPowerplayView.Territory};map.RenderNowForProbe(); Require(map.PreparedPowerActivityRingsForProbe==0&&map.SubmittedPowerActivityRingsForProbe==0,"Switching Activities off retained its range ring."); map.Filter=activities;map.Systems=[];map.RenderNowForProbe(); Require(map.PreparedPowerActivityRingsForProbe==0&&map.SubmittedPowerActivityRingsForProbe==0,"An empty result set retained a range ring."); map.Systems=[Fixture(actual,"explicit-synthetic-power-ring",false)];map.RenderNowForProbe(); Require(map.PreparedPowerActivityRingsForProbe==0&&map.SubmittedPowerActivityRingsForProbe==0,"A non-matching original outer Visible=false row retained a range ring."); await Save("range-ring-hidden"); map.Systems=[target,Fixture(other,"explicit-synthetic-conflicting-source")];map.RenderNowForProbe(); Require(map.PreparedPowerActivityRingsForProbe==0&&map.SubmittedPowerActivityRingsForProbe==0, "Incoherent source identities and different recorded centres selected an arbitrary range ring."); var result=new{actual.Name,actual.SystemAddress,actual.Position,conflictingRecordedCentre=new{other.Name,other.SystemAddress,other.Position}, radiusExplicitSyntheticFixture=radius,outerVisibilityAndAccountFactsExplicitSynthetic=true,processIdExplicitOwnFixture=Environment.ProcessId, fixtureDoesNotEstablishObservedPowerGeometry=true,generatedCatalogueCoordinates=false, coherentActivitiesPreparedOneSubmittedOne=true,ownManualExposureComputed=true,type2EmissiveExpected=.53827727f, unchangedManualControlsDoNotRedispatch=true,defaultScreenshotIsOrdinaryRealisticView=true, independentExtentExplicitSyntheticFixture=4,knownExtentSubmitsBillboard=true,missingZeroOrInsideExtentSuppressBillboard=true,inconsistentExtentsDoNotChooseOne=true, activitiesOffNoRing=true,emptySystemsNoRing=true,nonMatchingVisibleFalseNoRing=true,incoherentSourceNoArbitraryCentre=true, submissionCountDoesNotEstablishPixelVisibility=true,observations,gameAccess=false}; await File.WriteAllTextAsync(Path.Combine(directory,"power-ring-probe.json"),JsonSerializer.Serialize(result,new JsonSerializerOptions{WriteIndented=true})); return result; } finally{map.SuspendPage();MainWindow.Content=previous;} } }