Expose native Unity runtime state access

This commit is contained in:
Meta Vens 2026-06-29 06:10:30 +01:00
commit d10da01a69
10 changed files with 166 additions and 210 deletions

View file

@ -4570,12 +4570,10 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"ResolveZoneName(sectorZone, zoneDetails)",
"zoneFacts.Bodies",
"zoneFacts.Entities",
"AetheriaUnityRuntimeClientProvider.ResolveClient(",
".State",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".State.Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
"AetheriaUnityRuntimeClientProvider",
".Reactive<AetheriaRuntimeSectorMapDocument>(\"unity-sector-renderer\")",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex, \"unity-sector-renderer\")",
"_zoneDetails?.Current",
"AetheriaClient",
"AetheriaRuntimeZoneDetailsSurfaceCommands.TryRead(request, out var command)",
"AetheriaRuntimeZoneDetailsCommandKind.Close"
};
@ -4596,7 +4594,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeSectorMapDocument",
"_sectorMap",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Reactive<AetheriaRuntimeSectorMapDocument>(\"unity-sector-renderer\")",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
RequireReactiveTypedDocumentAccess(
@ -4604,7 +4602,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeCurrentZoneDocument",
"_currentZone",
".Reactive<AetheriaRuntimeCurrentZoneDocument>()",
".Reactive<AetheriaRuntimeCurrentZoneDocument>(\"unity-sector-renderer\")",
"AetheriaRuntimeCurrentZoneSession",
".ObserveZone()");
RequireReactiveTypedDocumentAccess(
@ -4612,7 +4610,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeZoneDetailsDocument",
"_zoneDetails",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex, \"unity-sector-renderer\")",
"AetheriaRuntimeZoneDetailsSession",
".ObserveZone(zoneIndex)");
RequireReactiveTypedDocumentAccess(
@ -4620,7 +4618,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
".Reactive<AetheriaRuntimeCatalogSnapshot>(\"unity-sector-renderer\")",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -4628,7 +4626,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root)
"SectorRenderer",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>(\"unity-sector-renderer\")",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -4801,11 +4799,10 @@ static void RequireRuntimeMenuTabsUseEveSurface(string root)
"SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex)",
"AetheriaRuntimeCurrentDockingDocument",
"CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking",
"_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()",
"AetheriaUnityRuntimeClientProvider",
".Reactive<AetheriaRuntimeCurrentDockingDocument>(\"unity-runtime-menu-tabs\")",
"docking = _currentDocking.Current",
"docking.IsDocked",
"AetheriaClient",
"AetheriaUnityRuntimeClientProvider.ResolveClient(",
"GetTabLabel(",
"ToRuntimeTabKey(",
"AetheriaRuntimeMenuTabsSurfaceBuilder.NormalizeTabKey(tab.ToString())",
@ -5694,7 +5691,7 @@ static void RequireInventoryEquippedItemDetailsUseEveSurface(string root)
var requiredActionBarInventorySymbols = new[]
{
"SetActionBarPresentation(AetheriaUnityActionBarPresentation actionBarPresentation)",
"ResolveClient()"
"AetheriaUnityRuntimeClientProvider.Control(\"unity-inventory-menu\")"
};
var missingActionBarInventorySymbols = requiredActionBarInventorySymbols
@ -5704,7 +5701,7 @@ static void RequireInventoryEquippedItemDetailsUseEveSurface(string root)
if (missingActionBarInventorySymbols.Length > 0)
{
throw new InvalidOperationException(
"InventoryMenu no longer submits equipped-item action-bar bindings through the typed AetheriaClient facade: " +
"InventoryMenu no longer submits equipped-item action-bar bindings through native Aetheria control access: " +
string.Join(", ", missingActionBarInventorySymbols));
}
@ -5805,10 +5802,10 @@ static void RequireTradeCargoSelectorUseEveSurface(string root)
"SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex)",
"AetheriaRuntimeCurrentDockingDocument",
"CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking",
"_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()",
".Reactive<AetheriaRuntimeCurrentDockingDocument>(\"unity-trade\")",
"docking = _currentDocking.Current",
"CultMeshReactiveDocument<AetheriaRuntimeStationRefitDocument> _stationRefit",
"_stationRefit = ResolveClient().State.Reactive<AetheriaRuntimeStationRefitDocument>()",
".Reactive<AetheriaRuntimeStationRefitDocument>(\"unity-trade\")",
"return _stationRefit?.Current",
"SetTargetCargo(",
"selection.EntityKey",
@ -7209,10 +7206,16 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
var missingSymbols = requiredSymbols
.Where(symbol => !source.Contains(symbol, StringComparison.Ordinal))
.ToArray();
var currentEntityAccess = name == "InventoryMenu.cs"
? ".Reactive<AetheriaRuntimeCurrentEntityDocument>(\"unity-inventory-menu\")"
: ".Reactive<AetheriaRuntimeCurrentEntityDocument>(\"unity-inventory\")";
var stationRefitAccess = name == "InventoryMenu.cs"
? ".Reactive<AetheriaRuntimeStationRefitDocument>(\"unity-inventory-menu\")"
: ".Reactive<AetheriaRuntimeStationRefitDocument>(\"unity-inventory\")";
var requiredCompactedSymbols = new[]
{
".Reactive<AetheriaRuntimeCurrentEntityDocument>()",
".Reactive<AetheriaRuntimeStationRefitDocument>()",
currentEntityAccess,
stationRefitAccess,
".Reactive<AetheriaRuntimeInventoryDocument>(entityIndex)"
};
missingSymbols = missingSymbols
@ -7256,7 +7259,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
name,
"AetheriaRuntimeCurrentEntityDocument",
"_currentEntity",
".Reactive<AetheriaRuntimeCurrentEntityDocument>()",
currentEntityAccess,
"AetheriaRuntimeCurrentEntitySession",
".ObserveEntity()");
RequireReactiveTypedDocumentAccess(
@ -7264,7 +7267,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root)
name,
"AetheriaRuntimeStationRefitDocument",
"_stationRefit",
".Reactive<AetheriaRuntimeStationRefitDocument>()",
stationRefitAccess,
"AetheriaRuntimeStationRefitSession",
".ObserveStationRefit()");
RequireReactiveTypedDocumentAccess(
@ -7383,7 +7386,7 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root)
var tradeMenu = File.ReadAllText(Path.Combine(root, "Assets", "Scripts", "UI", "Menu", "TradeMenu.cs"));
var directDockingOffenders = new List<string>();
if (!menuPanel.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) ||
!menuPanel.Contains("_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) ||
!menuPanel.Contains(".Reactive<AetheriaRuntimeCurrentDockingDocument>(\"unity-runtime-menu-tabs\")", StringComparison.Ordinal) ||
!menuPanel.Contains("docking = _currentDocking.Current", StringComparison.Ordinal) ||
menuPanel.Contains("ResolveClient().State.Latest<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal))
{
@ -7391,7 +7394,7 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root)
}
if (!tradeMenu.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) ||
!tradeMenu.Contains("_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) ||
!tradeMenu.Contains(".Reactive<AetheriaRuntimeCurrentDockingDocument>(\"unity-trade\")", StringComparison.Ordinal) ||
!tradeMenu.Contains("docking = _currentDocking.Current", StringComparison.Ordinal) ||
tradeMenu.Contains("ResolveClient().State.Latest<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal))
{
@ -7412,7 +7415,7 @@ static bool HasManagedDockingSnapshotAccess(string source)
{
if (source.Contains("AetheriaRuntimeCurrentDockingDocument", StringComparison.Ordinal) &&
source.Contains("CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking", StringComparison.Ordinal) &&
source.Contains("State.Reactive<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal) &&
source.Contains(".Reactive<AetheriaRuntimeCurrentDockingDocument>(", StringComparison.Ordinal) &&
source.Contains("_currentDocking.Current", StringComparison.Ordinal) &&
!source.Contains("ResolveClient().State.Latest<AetheriaRuntimeCurrentDockingDocument>()", StringComparison.Ordinal))
{
@ -7724,8 +7727,8 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
missingMapRendererSharedDocumentSymbols = missingMapRendererSharedDocumentSymbols
.Concat(new[]
{
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport)",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)"
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport,\"unity-map-renderer\")",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport,\"unity-map-renderer\")"
}.Where(symbol => !compactMapRenderer.Contains(symbol, StringComparison.Ordinal)))
.ToArray();
if (missingMapRendererSharedDocumentSymbols.Length > 0)
@ -7740,7 +7743,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MapRenderer",
"AetheriaRuntimeObjectsViewportDocument",
"_objectsViewport",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport)",
".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport,\"unity-map-renderer\")",
"AetheriaRuntimeObjectsViewportSession",
".ObserveObjects(viewport)");
RequireReactiveTypedDocumentAccess(
@ -7748,7 +7751,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MapRenderer",
"AetheriaRuntimeRenderSplatsViewportDocument",
"_renderSplatsViewport",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)",
".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport,\"unity-map-renderer\")",
"AetheriaRuntimeRenderSplatsViewportSession",
".ObserveRenderSplats(viewport)");
RequireReactiveTypedDocumentAccess(
@ -7756,7 +7759,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"MapRenderer",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>(\"unity-map-renderer\")",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7851,7 +7854,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"TradeMenu",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
".Reactive<AetheriaRuntimeCatalogSnapshot>(\"unity-trade\")",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7859,7 +7862,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"TradeMenu",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>(\"unity-trade\")",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7886,7 +7889,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryMenu",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
".Reactive<AetheriaRuntimeCatalogSnapshot>(\"unity-inventory-menu\")",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7894,7 +7897,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryMenu",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>(\"unity-inventory-menu\")",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7924,7 +7927,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryPanel",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
".Reactive<AetheriaRuntimeCatalogSnapshot>(\"unity-inventory\")",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -7932,7 +7935,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"InventoryPanel",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>(\"unity-inventory\")",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -7961,9 +7964,9 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
missingSectorRendererSharedDocumentSymbols = missingSectorRendererSharedDocumentSymbols
.Concat(new[]
{
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Reactive<AetheriaRuntimeCurrentZoneDocument>()",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)"
".Reactive<AetheriaRuntimeSectorMapDocument>(\"unity-sector-renderer\")",
".Reactive<AetheriaRuntimeCurrentZoneDocument>(\"unity-sector-renderer\")",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex,\"unity-sector-renderer\")"
}.Where(symbol => !compactSectorRenderer.Contains(symbol, StringComparison.Ordinal)))
.ToArray();
if (missingSectorRendererSharedDocumentSymbols.Length > 0)
@ -7978,7 +7981,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeSectorMapDocument",
"_sectorMap",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Reactive<AetheriaRuntimeSectorMapDocument>(\"unity-sector-renderer\")",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
RequireReactiveTypedDocumentAccess(
@ -7986,7 +7989,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeCurrentZoneDocument",
"_currentZone",
".Reactive<AetheriaRuntimeCurrentZoneDocument>()",
".Reactive<AetheriaRuntimeCurrentZoneDocument>(\"unity-sector-renderer\")",
"AetheriaRuntimeCurrentZoneSession",
".ObserveZone()");
RequireReactiveTypedDocumentAccess(
@ -7994,7 +7997,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeZoneDetailsDocument",
"_zoneDetails",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)",
".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex,\"unity-sector-renderer\")",
"AetheriaRuntimeZoneDetailsSession",
".ObserveZone(zoneIndex)");
RequireReactiveTypedDocumentAccess(
@ -8002,7 +8005,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimeCatalogSnapshot",
"_catalog",
"ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()",
".Reactive<AetheriaRuntimeCatalogSnapshot>(\"unity-sector-renderer\")",
"AetheriaRuntimeCatalogSession",
"ResolveClient().State.ObserveCatalog()");
RequireReactiveTypedDocumentAccess(
@ -8010,7 +8013,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"SectorRenderer",
"AetheriaRuntimePlayerSettingsDocument",
"_playerSettings",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
".Reactive<AetheriaRuntimePlayerSettingsDocument>(\"unity-sector-renderer\")",
"AetheriaRuntimePlayerSettingsSession",
".ObservePlayer()");
@ -14673,18 +14676,18 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
var compactMapRenderer = CompactSource(mapRenderer);
var compactSectorRenderer = CompactSource(sectorRenderer);
var compactSectorMap = CompactSource(sectorMap);
if (!mapRenderer.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".State.Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport)", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".State.Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport)", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".State.Reactive<AetheriaRuntimePlayerSettingsDocument>()", StringComparison.Ordinal) ||
!sectorRenderer.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Reactive<AetheriaRuntimeSectorMapDocument>()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex)", StringComparison.Ordinal) ||
if (!mapRenderer.Contains("AetheriaUnityRuntimeClientProvider", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport,\"unity-map-renderer\")", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport,\"unity-map-renderer\")", StringComparison.Ordinal) ||
!compactMapRenderer.Contains(".Reactive<AetheriaRuntimePlayerSettingsDocument>(\"unity-map-renderer\")", StringComparison.Ordinal) ||
!sectorRenderer.Contains("AetheriaUnityRuntimeClientProvider", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".Reactive<AetheriaRuntimeSectorMapDocument>(\"unity-sector-renderer\")", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex,\"unity-sector-renderer\")", StringComparison.Ordinal) ||
!sectorRenderer.Contains(".Current", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains("ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".State.Reactive<AetheriaRuntimePlayerSettingsDocument>()", StringComparison.Ordinal) ||
!sectorMap.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) ||
!compactSectorMap.Contains(".State.Reactive<AetheriaRuntimeSectorMapDocument>()", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".Reactive<AetheriaRuntimeCatalogSnapshot>(\"unity-sector-renderer\")", StringComparison.Ordinal) ||
!compactSectorRenderer.Contains(".Reactive<AetheriaRuntimePlayerSettingsDocument>(\"unity-sector-renderer\")", StringComparison.Ordinal) ||
!sectorMap.Contains("AetheriaUnityRuntimeClientProvider", StringComparison.Ordinal) ||
!compactSectorMap.Contains(".Reactive<AetheriaRuntimeSectorMapDocument>(\"unity-sector-map\")", StringComparison.Ordinal) ||
!sectorRenderer.Contains("AetheriaRuntimeZoneDetailsSurfaceBuilder.Facts(", StringComparison.Ordinal))
{
throw new InvalidOperationException(
@ -14703,7 +14706,7 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root)
"SectorMap",
"AetheriaRuntimeSectorMapDocument",
"_sectorMapDocument",
".Reactive<AetheriaRuntimeSectorMapDocument>()",
".Reactive<AetheriaRuntimeSectorMapDocument>(\"unity-sector-map\")",
"AetheriaRuntimeSectorMapSession",
".ObserveSectorMap()");
@ -16282,13 +16285,18 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
"public static RuntimePlayerSettings PlayerSettings",
"public static AetheriaClient ResolveClient(string stateFilePath, string runtimeId = \"\")",
"public static AetheriaClient ResolveClient(AetheriaRuntimeStateBootReport stateBoot, string runtimeId = \"\")",
"public static AetheriaClient RuntimeClient(string runtimeId = \"\")",
"public static AetheriaClientState RuntimeState(string runtimeId = \"\")",
"public static AetheriaControl Control(string runtimeId = \"\")",
"public static CultMeshReactiveDocument<TDocument> Reactive<TDocument>(string runtimeId = \"\")",
"public static CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public static AetheriaClient CurrentClientForStateFile(string stateFilePath)",
"private static readonly Dictionary<string, AetheriaClient> RuntimeClients",
"RuntimeClients.TryGetValue(cacheKey, out var runtimeClient)",
"RuntimeClients[cacheKey] = runtimeClient",
"AetheriaClient",
".State",
".Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"Reactive<AetheriaRuntimePlayerSettingsDocument>()",
"_playerSettingsDocument.Current",
"_playerSettingsDocument?.Dispose()",
"OpenAsync(",
@ -16345,7 +16353,7 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
}
var missingProviderClientAccess = providerOwnedClientAccessSources
.Where(pair => !pair.Value.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal))
.Where(pair => !pair.Value.Contains("AetheriaUnityRuntimeClientProvider", StringComparison.Ordinal))
.Select(pair => pair.Key)
.ToArray();
if (missingProviderClientAccess.Length > 0)
@ -17632,7 +17640,7 @@ static void RequireInventoryDoubleClickTransferRequestAuthority(string root)
"TryResolveTypedInventoryRows(",
"TryValidateTypedCargoSlot(",
"TryValidateTypedEquipmentSlot(",
".State.Reactive<AetheriaRuntimeInventoryDocument>(entityIndex)",
".Reactive<AetheriaRuntimeInventoryDocument>(entityIndex)",
"origin.Cargo.TryGetValue(item, out var originPosition)",
"SourceIndex == cargoIndex",
"SourceIndex == equipmentIndex",
@ -17649,7 +17657,7 @@ static void RequireInventoryDoubleClickTransferRequestAuthority(string root)
if (missingTypedSlotValidationSymbols.Length > 0)
{
throw new InvalidOperationException(
"Inventory cargo/equipment submissions must validate Unity facade adapters against typed inventory document slot identity: " +
"Inventory cargo/equipment submissions must validate Unity inventory items against typed inventory document slot identity: " +
string.Join(", ", missingTypedSlotValidationSymbols));
}
@ -18185,7 +18193,7 @@ static void RequireInventoryLoadoutSaveRequestAuthority(string root)
"CultMeshReactiveDocument<AetheriaRuntimeDaemonFrameDocument> _loadoutFrame",
"CreateLoadoutTemplate(targetEntityKey)",
".CreateLoadoutTemplate(targetEntityKey ?? \"\")",
".Reactive<AetheriaRuntimeDaemonFrameDocument>()",
".Reactive<AetheriaRuntimeDaemonFrameDocument>(\"unity-inventory\")",
"_loadoutFrame?.Dispose()",
".Ui.SaveLoadoutTemplateAsync(loadout, \"unity-inventory\")"
};
@ -18211,7 +18219,7 @@ static void RequireInventoryLoadoutSaveRequestAuthority(string root)
"InventoryPanel",
"AetheriaRuntimeDaemonFrameDocument",
"_loadoutFrame",
".Reactive<AetheriaRuntimeDaemonFrameDocument>()",
".Reactive<AetheriaRuntimeDaemonFrameDocument>(\"unity-inventory\")",
"AetheriaRuntimeDaemonFrameSession",
".ObserveDaemonFrame()");

View file

@ -57,6 +57,43 @@ public static class AetheriaUnityRuntimeClientProvider
string.IsNullOrWhiteSpace(runtimeId) ? stateBoot.RuntimeId : runtimeId);
}
public static AetheriaClient RuntimeClient(string runtimeId = "")
{
return ResolveClient(AetheriaUnityRuntimePaths.RuntimeStateFilePath, runtimeId);
}
public static AetheriaClientState RuntimeState(string runtimeId = "")
{
return RuntimeClient(runtimeId).State;
}
public static AetheriaControl Control(string runtimeId = "")
{
return RuntimeClient(runtimeId).Control;
}
public static CultMeshReactiveDocument<TDocument> Reactive<TDocument>(string runtimeId = "")
where TDocument : class
{
return RuntimeState(runtimeId).Reactive<TDocument>();
}
public static CultMeshReactiveDocument<TDocument> Reactive<TDocument>(
AetheriaRuntimeRtsViewportBounds viewport,
string runtimeId = "")
where TDocument : class
{
return RuntimeState(runtimeId).Reactive<TDocument>(viewport);
}
public static CultMeshReactiveDocument<TDocument> Reactive<TDocument>(
int index,
string runtimeId = "")
where TDocument : class
{
return RuntimeState(runtimeId).Reactive<TDocument>(index);
}
public static AetheriaClient CurrentClientForStateFile(string stateFilePath)
{
foreach (var pair in RuntimeClients)
@ -94,8 +131,7 @@ public static class AetheriaUnityRuntimeClientProvider
{
try
{
_playerSettingsDocument ??= ResolveClient(AetheriaUnityRuntimePaths.RuntimeStateFilePath)
.State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
_playerSettingsDocument ??= Reactive<AetheriaRuntimePlayerSettingsDocument>();
var stored = _playerSettingsDocument.Current;
if (stored == null)

View file

@ -31,7 +31,6 @@ public class InventoryMenu : MonoBehaviour
private UIDocument _shipSettingsSurfaceDocument;
private UIDocument _cargoItemDetailsSurfaceDocument;
private UIDocument _equippedItemDetailsSurfaceDocument;
private string _clientStatePath = "";
private CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot> _catalog;
private CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings;
private CultMeshReactiveDocument<AetheriaRuntimeCurrentEntityDocument> _currentEntity;
@ -898,7 +897,7 @@ public class InventoryMenu : MonoBehaviour
try
{
submit(ResolveClient().Control);
submit(AetheriaUnityRuntimeClientProvider.Control("unity-inventory-menu"));
return true;
}
catch (Exception ex)
@ -908,18 +907,6 @@ public class InventoryMenu : MonoBehaviour
}
}
private AetheriaClient ResolveClient()
{
var stateBoot = AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory);
if (!string.Equals(_clientStatePath, stateBoot.StateFilePath, StringComparison.Ordinal))
{
_clientStatePath = stateBoot.StateFilePath;
ClearClientCaches();
}
return AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot, "unity-inventory-menu");
}
private void ClearClientCaches()
{
_catalog?.Dispose();
@ -944,8 +931,8 @@ public class InventoryMenu : MonoBehaviour
try
{
_currentEntity = ResolveClient()
.State.Reactive<AetheriaRuntimeCurrentEntityDocument>();
_currentEntity = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeCurrentEntityDocument>("unity-inventory-menu");
}
catch (Exception ex)
{
@ -962,8 +949,8 @@ public class InventoryMenu : MonoBehaviour
try
{
_stationRefit = ResolveClient()
.State.Reactive<AetheriaRuntimeStationRefitDocument>();
_stationRefit = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeStationRefitDocument>("unity-inventory-menu");
}
catch (Exception ex)
{
@ -980,8 +967,9 @@ public class InventoryMenu : MonoBehaviour
try
{
var nextInventory = ResolveClient()
.State.Reactive<AetheriaRuntimeInventoryDocument>(entityIndex);
var nextInventory = AetheriaUnityRuntimeClientProvider
.RuntimeState("unity-inventory-menu")
.Reactive<AetheriaRuntimeInventoryDocument>(entityIndex);
_inventory?.Dispose();
_inventoryEntityIndex = entityIndex;
_inventory = nextInventory;
@ -1053,7 +1041,8 @@ public class InventoryMenu : MonoBehaviour
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeCatalogSnapshot>("unity-inventory-menu");
}
catch (Exception ex)
{
@ -1070,8 +1059,8 @@ public class InventoryMenu : MonoBehaviour
try
{
_playerSettings = ResolveClient()
.State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
_playerSettings = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimePlayerSettingsDocument>("unity-inventory-menu");
}
catch (Exception ex)
{

View file

@ -108,7 +108,6 @@ public class InventoryPanel : MonoBehaviour, IPointerClickHandler
private int _clickCount;
private InventoryCell _clickCell;
private float _clickTime;
private string _clientStatePath = "";
private CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot> _catalog;
private CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings;
private CultMeshReactiveDocument<AetheriaRuntimeCurrentEntityDocument> _currentEntity;
@ -1080,7 +1079,7 @@ private void Update()
try
{
var client = ResolveClient();
var client = AetheriaUnityRuntimeClientProvider.RuntimeClient("unity-inventory");
var loadout = CreateLoadoutTemplate(targetEntityKey);
if (loadout?.RootEntity == null || string.IsNullOrWhiteSpace(loadout.RootEntity.Hull?.ItemKey ?? ""))
return;
@ -1455,7 +1454,7 @@ private void Update()
try
{
submit(ResolveClient().Control);
submit(AetheriaUnityRuntimeClientProvider.Control("unity-inventory"));
return true;
}
catch (Exception ex)
@ -1465,18 +1464,6 @@ private void Update()
}
}
private AetheriaClient ResolveClient()
{
var stateBoot = AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory);
if (!string.Equals(_clientStatePath, stateBoot.StateFilePath, StringComparison.Ordinal))
{
_clientStatePath = stateBoot.StateFilePath;
ClearClientCaches();
}
return AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot, "unity-inventory");
}
private void ClearClientCaches()
{
_catalog?.Dispose();
@ -1503,8 +1490,8 @@ private void Update()
try
{
_currentEntity = ResolveClient()
.State.Reactive<AetheriaRuntimeCurrentEntityDocument>();
_currentEntity = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeCurrentEntityDocument>("unity-inventory");
}
catch (Exception ex)
{
@ -1521,8 +1508,8 @@ private void Update()
try
{
_stationRefit = ResolveClient()
.State.Reactive<AetheriaRuntimeStationRefitDocument>();
_stationRefit = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeStationRefitDocument>("unity-inventory");
}
catch (Exception ex)
{
@ -1546,8 +1533,8 @@ private void Update()
try
{
_loadoutFrame = ResolveClient()
.State.Reactive<AetheriaRuntimeDaemonFrameDocument>();
_loadoutFrame = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeDaemonFrameDocument>("unity-inventory");
}
catch (Exception ex)
{
@ -1564,8 +1551,9 @@ private void Update()
try
{
var nextInventory = ResolveClient()
.State.Reactive<AetheriaRuntimeInventoryDocument>(entityIndex);
var nextInventory = AetheriaUnityRuntimeClientProvider
.RuntimeState("unity-inventory")
.Reactive<AetheriaRuntimeInventoryDocument>(entityIndex);
_inventory?.Dispose();
_inventoryEntityIndex = entityIndex;
_inventory = nextInventory;
@ -1585,7 +1573,8 @@ private void Update()
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeCatalogSnapshot>("unity-inventory");
}
catch (Exception ex)
{
@ -1602,8 +1591,8 @@ private void Update()
try
{
_playerSettings = ResolveClient()
.State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
_playerSettings = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimePlayerSettingsDocument>("unity-inventory");
}
catch (Exception ex)
{

View file

@ -27,7 +27,6 @@ public class LocalMenu : MonoBehaviour
private readonly AetheriaEveUnitySurfaceChrome _surfaceChrome = new AetheriaEveUnitySurfaceChrome();
private AetheriaUnityObservedEntityIndex _observedEntityIndex;
private AetheriaUnityObservedDockingIndex _observedDockingIndex;
private string _clientStatePath = "";
public void SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex)
{
@ -224,23 +223,12 @@ public class LocalMenu : MonoBehaviour
if (_observedEntityIndex == null)
return false;
dockingIndex = _observedDockingIndex ??= new AetheriaUnityObservedDockingIndex(ResolveClient, _observedEntityIndex);
dockingIndex = _observedDockingIndex ??= new AetheriaUnityObservedDockingIndex(
() => AetheriaUnityRuntimeClientProvider.RuntimeClient("unity-runtime-local-story"),
_observedEntityIndex);
return true;
}
private AetheriaClient ResolveClient()
{
var stateBoot = AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory);
if (!string.Equals(_clientStatePath, stateBoot.StateFilePath, StringComparison.Ordinal))
{
_clientStatePath = stateBoot.StateFilePath;
_observedDockingIndex?.Dispose();
_observedDockingIndex = null;
}
return AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot, "unity-runtime-local-story");
}
private void HideStorySurface()
{
if (_surfaceDocument == null)

View file

@ -44,7 +44,6 @@ public class MapRenderer : MonoBehaviour
private CultMeshReactiveDocument<AetheriaRuntimeRenderSplatsViewportDocument> _renderSplatsViewport;
private float _nextViewportRefreshTime;
private readonly List<RawImage> _rtsIconPool = new List<RawImage>();
private string _clientStatePath = "";
private CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings;
void Start()
@ -126,11 +125,12 @@ public class MapRenderer : MonoBehaviour
_nextViewportRefreshTime = Time.unscaledTime + .5f;
try
{
var client = ResolveClient();
var viewport = ResolveViewportBounds();
ClearViewportCaches();
_objectsViewport = client.State.Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport);
_renderSplatsViewport = client.State.Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport);
_objectsViewport = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeObjectsViewportDocument>(viewport, "unity-map-renderer");
_renderSplatsViewport = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeRenderSplatsViewportDocument>(viewport, "unity-map-renderer");
var objectsViewport = _objectsViewport?.Current;
var zoneName = string.IsNullOrWhiteSpace(objectsViewport?.ZoneName)
@ -312,8 +312,8 @@ public class MapRenderer : MonoBehaviour
{
try
{
_playerSettings ??= ResolveClient()
.State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
_playerSettings ??= AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimePlayerSettingsDocument>("unity-map-renderer");
return _playerSettings?.Current?.ShowAsteroidsInMinimap ?? false;
}
catch (Exception ex)
@ -323,20 +323,6 @@ public class MapRenderer : MonoBehaviour
}
}
private AetheriaClient ResolveClient()
{
var stateBoot = AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory);
if (!string.Equals(_clientStatePath, stateBoot.StateFilePath, StringComparison.Ordinal))
{
_clientStatePath = stateBoot.StateFilePath;
ClearClientCaches();
}
return AetheriaUnityRuntimeClientProvider.ResolveClient(
stateBoot,
"unity-map-renderer");
}
private void ClearClientCaches()
{
ClearViewportCaches();

View file

@ -32,7 +32,6 @@ public class MenuPanel : MonoBehaviour
private MenuTabBinding _current;
private UIDocument _tabSurfaceDocument;
private readonly AetheriaEveUnitySurfaceChrome _tabSurfaceChrome = new AetheriaEveUnitySurfaceChrome();
private string _clientStatePath = "";
private CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking;
public MenuTab CurrentTab { get; private set; }
@ -173,7 +172,8 @@ public class MenuPanel : MonoBehaviour
docking = null;
try
{
_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>();
_currentDocking ??= AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeCurrentDockingDocument>("unity-runtime-menu-tabs");
docking = _currentDocking.Current;
return docking != null;
}
@ -184,17 +184,6 @@ public class MenuPanel : MonoBehaviour
}
}
private AetheriaClient ResolveClient()
{
var stateBoot = AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory);
if (!string.Equals(_clientStatePath, stateBoot.StateFilePath, StringComparison.Ordinal))
{
_clientStatePath = stateBoot.StateFilePath;
}
return AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot, "unity-runtime-menu-tabs");
}
private static string GetTabLabel(MenuTabBinding tabBinding)
{
return string.IsNullOrWhiteSpace(tabBinding.Label)

View file

@ -221,8 +221,8 @@ public class SectorMap : MonoBehaviour
private void EnsureSectorMapLoaded()
{
_sectorMapDocument ??= ResolveClient()
.State.Reactive<AetheriaRuntimeSectorMapDocument>();
_sectorMapDocument ??= AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeSectorMapDocument>("unity-sector-map");
_sectorMap = _sectorMapDocument?.Current;
if (_sectorMapLoaded)
@ -497,13 +497,6 @@ public class SectorMap : MonoBehaviour
InfluenceCamera.gameObject.SetActive(false);
}
private AetheriaClient ResolveClient()
{
return AetheriaUnityRuntimeClientProvider.ResolveClient(
AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory),
"unity-sector-map");
}
private static float2 Position(AetheriaRuntimeSectorMapZone zone)
{
return new float2((float)zone.X, (float)zone.Y);

View file

@ -46,7 +46,6 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
private float _sectorBackgroundDepth;
private float _sectorCameraDepth;
private UIDocument _zoneDetailsSurfaceDocument;
private string _clientStatePath = "";
private CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot> _catalog;
private CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings;
private CultMeshReactiveDocument<AetheriaRuntimeSectorMapDocument> _sectorMap;
@ -169,8 +168,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
try
{
_sectorMap ??= ResolveClient()
.State.Reactive<AetheriaRuntimeSectorMapDocument>();
_sectorMap ??= AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeSectorMapDocument>("unity-sector-renderer");
var sectorMap = _sectorMap?.Current;
return (sectorMap?.Zones ?? Array.Empty<AetheriaRuntimeSectorMapZone>())
.FirstOrDefault(zone => zone.ZoneIndex == zoneIndex);
@ -197,8 +196,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
try
{
var nextZoneDetails = ResolveClient()
.State.Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex);
var nextZoneDetails = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeZoneDetailsDocument>(zoneIndex, "unity-sector-renderer");
_zoneDetails?.Dispose();
_zoneDetailsIndex = zoneIndex;
_zoneDetails = nextZoneDetails;
@ -224,7 +223,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeCatalogSnapshot>("unity-sector-renderer");
}
catch (Exception ex)
{
@ -241,8 +241,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
try
{
_playerSettings = ResolveClient()
.State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
_playerSettings = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimePlayerSettingsDocument>("unity-sector-renderer");
}
catch (Exception ex)
{
@ -267,18 +267,6 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
: formatted;
}
private AetheriaClient ResolveClient()
{
var stateBoot = AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory);
if (!string.Equals(_clientStatePath, stateBoot.StateFilePath, StringComparison.Ordinal))
{
_clientStatePath = stateBoot.StateFilePath;
ClearClientCaches();
}
return AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot, "unity-sector-renderer");
}
private void ClearClientCaches()
{
_catalog?.Dispose();
@ -312,8 +300,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS
{
try
{
_currentZone ??= ResolveClient()
.State.Reactive<AetheriaRuntimeCurrentZoneDocument>();
_currentZone ??= AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeCurrentZoneDocument>("unity-sector-renderer");
}
catch (Exception ex)
{

View file

@ -37,7 +37,6 @@ public class TradeMenu : MonoBehaviour
private UIDocument _filterSurfaceDocument;
private UIDocument _rowActionSurfaceDocument;
private UIDocument _tradeItemSurfaceDocument;
private string _clientStatePath = "";
private CultMeshReactiveDocument<AetheriaRuntimeCatalogSnapshot> _catalog;
private CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings;
private CultMeshReactiveDocument<AetheriaRuntimeCurrentDockingDocument> _currentDocking;
@ -518,7 +517,8 @@ public class TradeMenu : MonoBehaviour
try
{
_stationRefit = ResolveClient().State.Reactive<AetheriaRuntimeStationRefitDocument>();
_stationRefit = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeStationRefitDocument>("unity-trade");
}
catch (Exception ex)
{
@ -533,7 +533,8 @@ public class TradeMenu : MonoBehaviour
docking = null;
try
{
_currentDocking ??= ResolveClient().State.Reactive<AetheriaRuntimeCurrentDockingDocument>();
_currentDocking ??= AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeCurrentDockingDocument>("unity-trade");
docking = _currentDocking.Current;
return docking != null;
}
@ -585,7 +586,7 @@ public class TradeMenu : MonoBehaviour
try
{
submit(ResolveClient().Control);
submit(AetheriaUnityRuntimeClientProvider.Control("unity-trade"));
InvalidateStationRefit();
return true;
}
@ -596,18 +597,6 @@ public class TradeMenu : MonoBehaviour
}
}
private AetheriaClient ResolveClient()
{
var stateBoot = AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory);
if (!string.Equals(_clientStatePath, stateBoot.StateFilePath, StringComparison.Ordinal))
{
_clientStatePath = stateBoot.StateFilePath;
ClearClientCaches();
}
return AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot, "unity-trade");
}
private void ClearClientCaches()
{
_catalog?.Dispose();
@ -627,7 +616,8 @@ public class TradeMenu : MonoBehaviour
try
{
_catalog = ResolveClient().State.Reactive<AetheriaRuntimeCatalogSnapshot>();
_catalog = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimeCatalogSnapshot>("unity-trade");
}
catch (Exception ex)
{
@ -644,8 +634,8 @@ public class TradeMenu : MonoBehaviour
try
{
_playerSettings = ResolveClient()
.State.Reactive<AetheriaRuntimePlayerSettingsDocument>();
_playerSettings = AetheriaUnityRuntimeClientProvider
.Reactive<AetheriaRuntimePlayerSettingsDocument>("unity-trade");
}
catch (Exception ex)
{