diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index 3434b9589..06ec93c35 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -4570,12 +4570,10 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root) "ResolveZoneName(sectorZone, zoneDetails)", "zoneFacts.Bodies", "zoneFacts.Entities", - "AetheriaUnityRuntimeClientProvider.ResolveClient(", - ".State", - ".Reactive()", - ".State.Reactive(zoneIndex)", + "AetheriaUnityRuntimeClientProvider", + ".Reactive(\"unity-sector-renderer\")", + ".Reactive(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()", + ".Reactive(\"unity-sector-renderer\")", "AetheriaRuntimeSectorMapSession", ".ObserveSectorMap()"); RequireReactiveTypedDocumentAccess( @@ -4604,7 +4602,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root) "SectorRenderer", "AetheriaRuntimeCurrentZoneDocument", "_currentZone", - ".Reactive()", + ".Reactive(\"unity-sector-renderer\")", "AetheriaRuntimeCurrentZoneSession", ".ObserveZone()"); RequireReactiveTypedDocumentAccess( @@ -4612,7 +4610,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root) "SectorRenderer", "AetheriaRuntimeZoneDetailsDocument", "_zoneDetails", - ".Reactive(zoneIndex)", + ".Reactive(zoneIndex, \"unity-sector-renderer\")", "AetheriaRuntimeZoneDetailsSession", ".ObserveZone(zoneIndex)"); RequireReactiveTypedDocumentAccess( @@ -4620,7 +4618,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root) "SectorRenderer", "AetheriaRuntimeCatalogSnapshot", "_catalog", - "ResolveClient().State.Reactive()", + ".Reactive(\"unity-sector-renderer\")", "AetheriaRuntimeCatalogSession", "ResolveClient().State.ObserveCatalog()"); RequireReactiveTypedDocumentAccess( @@ -4628,7 +4626,7 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root) "SectorRenderer", "AetheriaRuntimePlayerSettingsDocument", "_playerSettings", - ".Reactive()", + ".Reactive(\"unity-sector-renderer\")", "AetheriaRuntimePlayerSettingsSession", ".ObservePlayer()"); @@ -4801,11 +4799,10 @@ static void RequireRuntimeMenuTabsUseEveSurface(string root) "SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex)", "AetheriaRuntimeCurrentDockingDocument", "CultMeshReactiveDocument _currentDocking", - "_currentDocking ??= ResolveClient().State.Reactive()", + "AetheriaUnityRuntimeClientProvider", + ".Reactive(\"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 _currentDocking", - "_currentDocking ??= ResolveClient().State.Reactive()", + ".Reactive(\"unity-trade\")", "docking = _currentDocking.Current", "CultMeshReactiveDocument _stationRefit", - "_stationRefit = ResolveClient().State.Reactive()", + ".Reactive(\"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(\"unity-inventory-menu\")" + : ".Reactive(\"unity-inventory\")"; + var stationRefitAccess = name == "InventoryMenu.cs" + ? ".Reactive(\"unity-inventory-menu\")" + : ".Reactive(\"unity-inventory\")"; var requiredCompactedSymbols = new[] { - ".Reactive()", - ".Reactive()", + currentEntityAccess, + stationRefitAccess, ".Reactive(entityIndex)" }; missingSymbols = missingSymbols @@ -7256,7 +7259,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root) name, "AetheriaRuntimeCurrentEntityDocument", "_currentEntity", - ".Reactive()", + currentEntityAccess, "AetheriaRuntimeCurrentEntitySession", ".ObserveEntity()"); RequireReactiveTypedDocumentAccess( @@ -7264,7 +7267,7 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root) name, "AetheriaRuntimeStationRefitDocument", "_stationRefit", - ".Reactive()", + 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(); if (!menuPanel.Contains("CultMeshReactiveDocument _currentDocking", StringComparison.Ordinal) || - !menuPanel.Contains("_currentDocking ??= ResolveClient().State.Reactive()", StringComparison.Ordinal) || + !menuPanel.Contains(".Reactive(\"unity-runtime-menu-tabs\")", StringComparison.Ordinal) || !menuPanel.Contains("docking = _currentDocking.Current", StringComparison.Ordinal) || menuPanel.Contains("ResolveClient().State.Latest()", StringComparison.Ordinal)) { @@ -7391,7 +7394,7 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root) } if (!tradeMenu.Contains("CultMeshReactiveDocument _currentDocking", StringComparison.Ordinal) || - !tradeMenu.Contains("_currentDocking ??= ResolveClient().State.Reactive()", StringComparison.Ordinal) || + !tradeMenu.Contains(".Reactive(\"unity-trade\")", StringComparison.Ordinal) || !tradeMenu.Contains("docking = _currentDocking.Current", StringComparison.Ordinal) || tradeMenu.Contains("ResolveClient().State.Latest()", StringComparison.Ordinal)) { @@ -7412,7 +7415,7 @@ static bool HasManagedDockingSnapshotAccess(string source) { if (source.Contains("AetheriaRuntimeCurrentDockingDocument", StringComparison.Ordinal) && source.Contains("CultMeshReactiveDocument _currentDocking", StringComparison.Ordinal) && - source.Contains("State.Reactive()", StringComparison.Ordinal) && + source.Contains(".Reactive(", StringComparison.Ordinal) && source.Contains("_currentDocking.Current", StringComparison.Ordinal) && !source.Contains("ResolveClient().State.Latest()", StringComparison.Ordinal)) { @@ -7724,8 +7727,8 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) missingMapRendererSharedDocumentSymbols = missingMapRendererSharedDocumentSymbols .Concat(new[] { - ".Reactive(viewport)", - ".Reactive(viewport)" + ".Reactive(viewport,\"unity-map-renderer\")", + ".Reactive(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(viewport)", + ".Reactive(viewport,\"unity-map-renderer\")", "AetheriaRuntimeObjectsViewportSession", ".ObserveObjects(viewport)"); RequireReactiveTypedDocumentAccess( @@ -7748,7 +7751,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "MapRenderer", "AetheriaRuntimeRenderSplatsViewportDocument", "_renderSplatsViewport", - ".Reactive(viewport)", + ".Reactive(viewport,\"unity-map-renderer\")", "AetheriaRuntimeRenderSplatsViewportSession", ".ObserveRenderSplats(viewport)"); RequireReactiveTypedDocumentAccess( @@ -7756,7 +7759,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "MapRenderer", "AetheriaRuntimePlayerSettingsDocument", "_playerSettings", - ".Reactive()", + ".Reactive(\"unity-map-renderer\")", "AetheriaRuntimePlayerSettingsSession", ".ObservePlayer()"); @@ -7851,7 +7854,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "TradeMenu", "AetheriaRuntimeCatalogSnapshot", "_catalog", - "ResolveClient().State.Reactive()", + ".Reactive(\"unity-trade\")", "AetheriaRuntimeCatalogSession", "ResolveClient().State.ObserveCatalog()"); RequireReactiveTypedDocumentAccess( @@ -7859,7 +7862,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "TradeMenu", "AetheriaRuntimePlayerSettingsDocument", "_playerSettings", - ".Reactive()", + ".Reactive(\"unity-trade\")", "AetheriaRuntimePlayerSettingsSession", ".ObservePlayer()"); @@ -7886,7 +7889,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "InventoryMenu", "AetheriaRuntimeCatalogSnapshot", "_catalog", - "ResolveClient().State.Reactive()", + ".Reactive(\"unity-inventory-menu\")", "AetheriaRuntimeCatalogSession", "ResolveClient().State.ObserveCatalog()"); RequireReactiveTypedDocumentAccess( @@ -7894,7 +7897,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "InventoryMenu", "AetheriaRuntimePlayerSettingsDocument", "_playerSettings", - ".Reactive()", + ".Reactive(\"unity-inventory-menu\")", "AetheriaRuntimePlayerSettingsSession", ".ObservePlayer()"); @@ -7924,7 +7927,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "InventoryPanel", "AetheriaRuntimeCatalogSnapshot", "_catalog", - "ResolveClient().State.Reactive()", + ".Reactive(\"unity-inventory\")", "AetheriaRuntimeCatalogSession", "ResolveClient().State.ObserveCatalog()"); RequireReactiveTypedDocumentAccess( @@ -7932,7 +7935,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "InventoryPanel", "AetheriaRuntimePlayerSettingsDocument", "_playerSettings", - ".Reactive()", + ".Reactive(\"unity-inventory\")", "AetheriaRuntimePlayerSettingsSession", ".ObservePlayer()"); @@ -7961,9 +7964,9 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) missingSectorRendererSharedDocumentSymbols = missingSectorRendererSharedDocumentSymbols .Concat(new[] { - ".Reactive()", - ".Reactive()", - ".Reactive(zoneIndex)" + ".Reactive(\"unity-sector-renderer\")", + ".Reactive(\"unity-sector-renderer\")", + ".Reactive(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()", + ".Reactive(\"unity-sector-renderer\")", "AetheriaRuntimeSectorMapSession", ".ObserveSectorMap()"); RequireReactiveTypedDocumentAccess( @@ -7986,7 +7989,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "SectorRenderer", "AetheriaRuntimeCurrentZoneDocument", "_currentZone", - ".Reactive()", + ".Reactive(\"unity-sector-renderer\")", "AetheriaRuntimeCurrentZoneSession", ".ObserveZone()"); RequireReactiveTypedDocumentAccess( @@ -7994,7 +7997,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "SectorRenderer", "AetheriaRuntimeZoneDetailsDocument", "_zoneDetails", - ".Reactive(zoneIndex)", + ".Reactive(zoneIndex,\"unity-sector-renderer\")", "AetheriaRuntimeZoneDetailsSession", ".ObserveZone(zoneIndex)"); RequireReactiveTypedDocumentAccess( @@ -8002,7 +8005,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "SectorRenderer", "AetheriaRuntimeCatalogSnapshot", "_catalog", - "ResolveClient().State.Reactive()", + ".Reactive(\"unity-sector-renderer\")", "AetheriaRuntimeCatalogSession", "ResolveClient().State.ObserveCatalog()"); RequireReactiveTypedDocumentAccess( @@ -8010,7 +8013,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "SectorRenderer", "AetheriaRuntimePlayerSettingsDocument", "_playerSettings", - ".Reactive()", + ".Reactive(\"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(viewport)", StringComparison.Ordinal) || - !compactMapRenderer.Contains(".State.Reactive(viewport)", StringComparison.Ordinal) || - !compactMapRenderer.Contains(".State.Reactive()", StringComparison.Ordinal) || - !sectorRenderer.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) || - !compactSectorRenderer.Contains(".State.Reactive()", StringComparison.Ordinal) || - !compactSectorRenderer.Contains(".State.Reactive(zoneIndex)", StringComparison.Ordinal) || + if (!mapRenderer.Contains("AetheriaUnityRuntimeClientProvider", StringComparison.Ordinal) || + !compactMapRenderer.Contains(".Reactive(viewport,\"unity-map-renderer\")", StringComparison.Ordinal) || + !compactMapRenderer.Contains(".Reactive(viewport,\"unity-map-renderer\")", StringComparison.Ordinal) || + !compactMapRenderer.Contains(".Reactive(\"unity-map-renderer\")", StringComparison.Ordinal) || + !sectorRenderer.Contains("AetheriaUnityRuntimeClientProvider", StringComparison.Ordinal) || + !compactSectorRenderer.Contains(".Reactive(\"unity-sector-renderer\")", StringComparison.Ordinal) || + !compactSectorRenderer.Contains(".Reactive(zoneIndex,\"unity-sector-renderer\")", StringComparison.Ordinal) || !sectorRenderer.Contains(".Current", StringComparison.Ordinal) || - !compactSectorRenderer.Contains("ResolveClient().State.Reactive()", StringComparison.Ordinal) || - !compactSectorRenderer.Contains(".State.Reactive()", StringComparison.Ordinal) || - !sectorMap.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) || - !compactSectorMap.Contains(".State.Reactive()", StringComparison.Ordinal) || + !compactSectorRenderer.Contains(".Reactive(\"unity-sector-renderer\")", StringComparison.Ordinal) || + !compactSectorRenderer.Contains(".Reactive(\"unity-sector-renderer\")", StringComparison.Ordinal) || + !sectorMap.Contains("AetheriaUnityRuntimeClientProvider", StringComparison.Ordinal) || + !compactSectorMap.Contains(".Reactive(\"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()", + ".Reactive(\"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 Reactive(string runtimeId = \"\")", + "public static CultMeshReactiveDocument Reactive(", "public static AetheriaClient CurrentClientForStateFile(string stateFilePath)", "private static readonly Dictionary RuntimeClients", "RuntimeClients.TryGetValue(cacheKey, out var runtimeClient)", "RuntimeClients[cacheKey] = runtimeClient", "AetheriaClient", ".State", - ".Reactive()", + "Reactive()", "_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(entityIndex)", + ".Reactive(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 _loadoutFrame", "CreateLoadoutTemplate(targetEntityKey)", ".CreateLoadoutTemplate(targetEntityKey ?? \"\")", - ".Reactive()", + ".Reactive(\"unity-inventory\")", "_loadoutFrame?.Dispose()", ".Ui.SaveLoadoutTemplateAsync(loadout, \"unity-inventory\")" }; @@ -18211,7 +18219,7 @@ static void RequireInventoryLoadoutSaveRequestAuthority(string root) "InventoryPanel", "AetheriaRuntimeDaemonFrameDocument", "_loadoutFrame", - ".Reactive()", + ".Reactive(\"unity-inventory\")", "AetheriaRuntimeDaemonFrameSession", ".ObserveDaemonFrame()"); diff --git a/Assets/Scripts/Gameplay/AetheriaUnityRuntimeClientProvider.cs b/Assets/Scripts/Gameplay/AetheriaUnityRuntimeClientProvider.cs index 00d76348e..a2839ed2e 100644 --- a/Assets/Scripts/Gameplay/AetheriaUnityRuntimeClientProvider.cs +++ b/Assets/Scripts/Gameplay/AetheriaUnityRuntimeClientProvider.cs @@ -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 Reactive(string runtimeId = "") + where TDocument : class + { + return RuntimeState(runtimeId).Reactive(); + } + + public static CultMeshReactiveDocument Reactive( + AetheriaRuntimeRtsViewportBounds viewport, + string runtimeId = "") + where TDocument : class + { + return RuntimeState(runtimeId).Reactive(viewport); + } + + public static CultMeshReactiveDocument Reactive( + int index, + string runtimeId = "") + where TDocument : class + { + return RuntimeState(runtimeId).Reactive(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(); + _playerSettingsDocument ??= Reactive(); var stored = _playerSettingsDocument.Current; if (stored == null) diff --git a/Assets/Scripts/UI/Menu/InventoryMenu.cs b/Assets/Scripts/UI/Menu/InventoryMenu.cs index 200f4ca92..41a8804a4 100644 --- a/Assets/Scripts/UI/Menu/InventoryMenu.cs +++ b/Assets/Scripts/UI/Menu/InventoryMenu.cs @@ -31,7 +31,6 @@ public class InventoryMenu : MonoBehaviour private UIDocument _shipSettingsSurfaceDocument; private UIDocument _cargoItemDetailsSurfaceDocument; private UIDocument _equippedItemDetailsSurfaceDocument; - private string _clientStatePath = ""; private CultMeshReactiveDocument _catalog; private CultMeshReactiveDocument _playerSettings; private CultMeshReactiveDocument _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(); + _currentEntity = AetheriaUnityRuntimeClientProvider + .Reactive("unity-inventory-menu"); } catch (Exception ex) { @@ -962,8 +949,8 @@ public class InventoryMenu : MonoBehaviour try { - _stationRefit = ResolveClient() - .State.Reactive(); + _stationRefit = AetheriaUnityRuntimeClientProvider + .Reactive("unity-inventory-menu"); } catch (Exception ex) { @@ -980,8 +967,9 @@ public class InventoryMenu : MonoBehaviour try { - var nextInventory = ResolveClient() - .State.Reactive(entityIndex); + var nextInventory = AetheriaUnityRuntimeClientProvider + .RuntimeState("unity-inventory-menu") + .Reactive(entityIndex); _inventory?.Dispose(); _inventoryEntityIndex = entityIndex; _inventory = nextInventory; @@ -1053,7 +1041,8 @@ public class InventoryMenu : MonoBehaviour try { - _catalog = ResolveClient().State.Reactive(); + _catalog = AetheriaUnityRuntimeClientProvider + .Reactive("unity-inventory-menu"); } catch (Exception ex) { @@ -1070,8 +1059,8 @@ public class InventoryMenu : MonoBehaviour try { - _playerSettings = ResolveClient() - .State.Reactive(); + _playerSettings = AetheriaUnityRuntimeClientProvider + .Reactive("unity-inventory-menu"); } catch (Exception ex) { diff --git a/Assets/Scripts/UI/Menu/InventoryPanel.cs b/Assets/Scripts/UI/Menu/InventoryPanel.cs index a844b112f..b7d5a0225 100644 --- a/Assets/Scripts/UI/Menu/InventoryPanel.cs +++ b/Assets/Scripts/UI/Menu/InventoryPanel.cs @@ -108,7 +108,6 @@ public class InventoryPanel : MonoBehaviour, IPointerClickHandler private int _clickCount; private InventoryCell _clickCell; private float _clickTime; - private string _clientStatePath = ""; private CultMeshReactiveDocument _catalog; private CultMeshReactiveDocument _playerSettings; private CultMeshReactiveDocument _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(); + _currentEntity = AetheriaUnityRuntimeClientProvider + .Reactive("unity-inventory"); } catch (Exception ex) { @@ -1521,8 +1508,8 @@ private void Update() try { - _stationRefit = ResolveClient() - .State.Reactive(); + _stationRefit = AetheriaUnityRuntimeClientProvider + .Reactive("unity-inventory"); } catch (Exception ex) { @@ -1546,8 +1533,8 @@ private void Update() try { - _loadoutFrame = ResolveClient() - .State.Reactive(); + _loadoutFrame = AetheriaUnityRuntimeClientProvider + .Reactive("unity-inventory"); } catch (Exception ex) { @@ -1564,8 +1551,9 @@ private void Update() try { - var nextInventory = ResolveClient() - .State.Reactive(entityIndex); + var nextInventory = AetheriaUnityRuntimeClientProvider + .RuntimeState("unity-inventory") + .Reactive(entityIndex); _inventory?.Dispose(); _inventoryEntityIndex = entityIndex; _inventory = nextInventory; @@ -1585,7 +1573,8 @@ private void Update() try { - _catalog = ResolveClient().State.Reactive(); + _catalog = AetheriaUnityRuntimeClientProvider + .Reactive("unity-inventory"); } catch (Exception ex) { @@ -1602,8 +1591,8 @@ private void Update() try { - _playerSettings = ResolveClient() - .State.Reactive(); + _playerSettings = AetheriaUnityRuntimeClientProvider + .Reactive("unity-inventory"); } catch (Exception ex) { diff --git a/Assets/Scripts/UI/Menu/LocalMenu.cs b/Assets/Scripts/UI/Menu/LocalMenu.cs index f19c62a49..43d1dfead 100644 --- a/Assets/Scripts/UI/Menu/LocalMenu.cs +++ b/Assets/Scripts/UI/Menu/LocalMenu.cs @@ -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) diff --git a/Assets/Scripts/UI/Menu/MapRenderer.cs b/Assets/Scripts/UI/Menu/MapRenderer.cs index 04f82cda7..5afa70f9f 100644 --- a/Assets/Scripts/UI/Menu/MapRenderer.cs +++ b/Assets/Scripts/UI/Menu/MapRenderer.cs @@ -44,7 +44,6 @@ public class MapRenderer : MonoBehaviour private CultMeshReactiveDocument _renderSplatsViewport; private float _nextViewportRefreshTime; private readonly List _rtsIconPool = new List(); - private string _clientStatePath = ""; private CultMeshReactiveDocument _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(viewport); - _renderSplatsViewport = client.State.Reactive(viewport); + _objectsViewport = AetheriaUnityRuntimeClientProvider + .Reactive(viewport, "unity-map-renderer"); + _renderSplatsViewport = AetheriaUnityRuntimeClientProvider + .Reactive(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(); + _playerSettings ??= AetheriaUnityRuntimeClientProvider + .Reactive("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(); diff --git a/Assets/Scripts/UI/Menu/MenuPanel.cs b/Assets/Scripts/UI/Menu/MenuPanel.cs index f802505b2..8da020c12 100644 --- a/Assets/Scripts/UI/Menu/MenuPanel.cs +++ b/Assets/Scripts/UI/Menu/MenuPanel.cs @@ -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 _currentDocking; public MenuTab CurrentTab { get; private set; } @@ -173,7 +172,8 @@ public class MenuPanel : MonoBehaviour docking = null; try { - _currentDocking ??= ResolveClient().State.Reactive(); + _currentDocking ??= AetheriaUnityRuntimeClientProvider + .Reactive("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) diff --git a/Assets/Scripts/UI/Menu/SectorMap.cs b/Assets/Scripts/UI/Menu/SectorMap.cs index 0d9a0c7a8..df33f3832 100644 --- a/Assets/Scripts/UI/Menu/SectorMap.cs +++ b/Assets/Scripts/UI/Menu/SectorMap.cs @@ -221,8 +221,8 @@ public class SectorMap : MonoBehaviour private void EnsureSectorMapLoaded() { - _sectorMapDocument ??= ResolveClient() - .State.Reactive(); + _sectorMapDocument ??= AetheriaUnityRuntimeClientProvider + .Reactive("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); diff --git a/Assets/Scripts/UI/Menu/SectorRenderer.cs b/Assets/Scripts/UI/Menu/SectorRenderer.cs index 7d90126dd..124da209d 100644 --- a/Assets/Scripts/UI/Menu/SectorRenderer.cs +++ b/Assets/Scripts/UI/Menu/SectorRenderer.cs @@ -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 _catalog; private CultMeshReactiveDocument _playerSettings; private CultMeshReactiveDocument _sectorMap; @@ -169,8 +168,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS try { - _sectorMap ??= ResolveClient() - .State.Reactive(); + _sectorMap ??= AetheriaUnityRuntimeClientProvider + .Reactive("unity-sector-renderer"); var sectorMap = _sectorMap?.Current; return (sectorMap?.Zones ?? Array.Empty()) .FirstOrDefault(zone => zone.ZoneIndex == zoneIndex); @@ -197,8 +196,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS try { - var nextZoneDetails = ResolveClient() - .State.Reactive(zoneIndex); + var nextZoneDetails = AetheriaUnityRuntimeClientProvider + .Reactive(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(); + _catalog = AetheriaUnityRuntimeClientProvider + .Reactive("unity-sector-renderer"); } catch (Exception ex) { @@ -241,8 +241,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS try { - _playerSettings = ResolveClient() - .State.Reactive(); + _playerSettings = AetheriaUnityRuntimeClientProvider + .Reactive("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(); + _currentZone ??= AetheriaUnityRuntimeClientProvider + .Reactive("unity-sector-renderer"); } catch (Exception ex) { diff --git a/Assets/Scripts/UI/Menu/TradeMenu.cs b/Assets/Scripts/UI/Menu/TradeMenu.cs index ea1dbe651..9e7e4ea69 100644 --- a/Assets/Scripts/UI/Menu/TradeMenu.cs +++ b/Assets/Scripts/UI/Menu/TradeMenu.cs @@ -37,7 +37,6 @@ public class TradeMenu : MonoBehaviour private UIDocument _filterSurfaceDocument; private UIDocument _rowActionSurfaceDocument; private UIDocument _tradeItemSurfaceDocument; - private string _clientStatePath = ""; private CultMeshReactiveDocument _catalog; private CultMeshReactiveDocument _playerSettings; private CultMeshReactiveDocument _currentDocking; @@ -518,7 +517,8 @@ public class TradeMenu : MonoBehaviour try { - _stationRefit = ResolveClient().State.Reactive(); + _stationRefit = AetheriaUnityRuntimeClientProvider + .Reactive("unity-trade"); } catch (Exception ex) { @@ -533,7 +533,8 @@ public class TradeMenu : MonoBehaviour docking = null; try { - _currentDocking ??= ResolveClient().State.Reactive(); + _currentDocking ??= AetheriaUnityRuntimeClientProvider + .Reactive("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(); + _catalog = AetheriaUnityRuntimeClientProvider + .Reactive("unity-trade"); } catch (Exception ex) { @@ -644,8 +634,8 @@ public class TradeMenu : MonoBehaviour try { - _playerSettings = ResolveClient() - .State.Reactive(); + _playerSettings = AetheriaUnityRuntimeClientProvider + .Reactive("unity-trade"); } catch (Exception ex) {