diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index c8b0742a9..da2ddd06e 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -2567,7 +2567,7 @@ static void RequireDaemonRenderQueryAuthority(string root) "ResolveCurrentEntityHudStatus()", ".Reactive(\"unity-schematic-display\")", ".Reactive(\"unity-schematic-display\")", - ".Reactive(\"unity-schematic-display\")", + ".ReactiveCurrentEntity(\"unity-schematic-display\")", "return _currentEntity?.Current?.Hud ?? new AetheriaRuntimeCurrentEntityHudStatus();", "_currentEntity?.Dispose()", "hud.OverrideShutdown", @@ -5811,7 +5811,7 @@ static void RequireTradeCargoSelectorUseEveSurface(string root) ".ReactiveCurrentDocking(\"unity-trade\")", "docking = _currentDocking.Current", "CultMeshReactiveDocument _stationRefit", - ".Reactive(\"unity-trade\")", + ".ReactiveStationRefit(\"unity-trade\")", "return _stationRefit?.Current", "SetTargetCargo(", "selection.EntityKey", @@ -7213,11 +7213,11 @@ static void RequireInventoryValidationUsesManagedTypedDocuments(string root) .Where(symbol => !source.Contains(symbol, StringComparison.Ordinal)) .ToArray(); var currentEntityAccess = name == "InventoryMenu.cs" - ? ".Reactive(\"unity-inventory-menu\")" - : ".Reactive(\"unity-inventory\")"; + ? ".ReactiveCurrentEntity(\"unity-inventory-menu\")" + : ".ReactiveCurrentEntity(\"unity-inventory\")"; var stationRefitAccess = name == "InventoryMenu.cs" - ? ".Reactive(\"unity-inventory-menu\")" - : ".Reactive(\"unity-inventory\")"; + ? ".ReactiveStationRefit(\"unity-inventory-menu\")" + : ".ReactiveStationRefit(\"unity-inventory\")"; var requiredCompactedSymbols = new[] { currentEntityAccess, @@ -7451,9 +7451,9 @@ static bool HasManagedDockingSnapshotAccess(string source) source.Contains("CultMeshReactiveDocument _stationRefit", StringComparison.Ordinal) && source.Contains("TryReadCurrentDockingDocuments(", StringComparison.Ordinal) && source.Contains("AetheriaUnityRuntimeClientProvider", StringComparison.Ordinal) && - source.Contains(".Reactive(\"unity-observed-docking\")", StringComparison.Ordinal) && + source.Contains(".ReactiveCurrentEntity(\"unity-observed-docking\")", StringComparison.Ordinal) && source.Contains(".ReactiveCurrentDocking(\"unity-observed-docking\")", StringComparison.Ordinal) && - source.Contains(".Reactive(\"unity-observed-docking\")", StringComparison.Ordinal) && + source.Contains(".ReactiveStationRefit(\"unity-observed-docking\")", StringComparison.Ordinal) && source.Contains("_currentDocking?.Current", StringComparison.Ordinal) && source.Contains("_stationRefit?.Current", StringComparison.Ordinal) && !source.Contains("state.Latest()", StringComparison.Ordinal) && @@ -7604,7 +7604,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "CultMeshReactiveDocument _currentEntity", ".Reactive(\"unity-schematic-display\")", ".Reactive(\"unity-schematic-display\")", - ".Reactive(\"unity-schematic-display\")", + ".ReactiveCurrentEntity(\"unity-schematic-display\")", "_catalog?.Dispose()", "_playerSettings?.Dispose()", "_currentEntity?.Dispose()", @@ -8327,6 +8327,10 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root "public enum AetheriaClientEveSurface", "public CultMeshDocumentHandle CurrentDocking()", "public CultMeshReactiveDocument ReactiveCurrentDocking()", + "public CultMeshDocumentHandle CurrentEntityDocument()", + "public CultMeshReactiveDocument ReactiveCurrentEntity()", + "public CultMeshDocumentHandle StationRefitDocument()", + "public CultMeshReactiveDocument ReactiveStationRefit()", "public static bool TryResolveEveSurface(", "public CultMeshDocumentHandle? EveSurfaceDocument(", "public CultMeshReactiveDocument? ReactiveEveSurface(", @@ -8379,7 +8383,6 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root "ReactiveZoneContactsAsync(", "LatestStationRefit(", "LatestStationRefitAsync(", - "ReactiveStationRefit(", "ReactiveStationRefitAsync(", "LatestDaemonFrame(", "LatestDaemonFrameAsync(", @@ -8622,7 +8625,9 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root "AetheriaRuntimeObservedDockingState must not return as a docking aggregate wrapper; callers should own the managed typed docking documents directly."); } - if (!daemonRuntimeDocumentTests.Contains("using var currentDockingReactive = client.State.ReactiveCurrentDocking()", StringComparison.Ordinal) || + if (!daemonRuntimeDocumentTests.Contains("using var currentEntityDocumentReactive = client.State.ReactiveCurrentEntity()", StringComparison.Ordinal) || + !daemonRuntimeDocumentTests.Contains("using var currentDockingReactive = client.State.ReactiveCurrentDocking()", StringComparison.Ordinal) || + !daemonRuntimeDocumentTests.Contains("using var stationRefitReactive = client.State.ReactiveStationRefit()", StringComparison.Ordinal) || !daemonRuntimeDocumentTests.Contains("currentDockingReactive.Current.CurrentEntityKey", StringComparison.Ordinal) || daemonRuntimeDocumentTests.Contains("AetheriaRuntimeObservedDockingState", StringComparison.Ordinal)) { @@ -13549,9 +13554,9 @@ static void RequireMainMenuContinueRunState(string root) "CultMeshReactiveDocument _stationRefit", "TryReadCurrentDockingDocuments(", "AetheriaUnityRuntimeClientProvider", - ".Reactive(\"unity-observed-docking\")", + ".ReactiveCurrentEntity(\"unity-observed-docking\")", ".ReactiveCurrentDocking(\"unity-observed-docking\")", - ".Reactive(\"unity-observed-docking\")", + ".ReactiveStationRefit(\"unity-observed-docking\")", "_currentDocking?.Current", "_stationRefit?.Current", "public bool IsEntityUndocked(Entity entity)", @@ -16340,6 +16345,8 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root) "public static AetheriaUi Ui(", "public static CultMeshReactiveDocument Reactive(string runtimeId = \"\")", "public static CultMeshReactiveDocument ReactiveCurrentDocking(", + "public static CultMeshReactiveDocument ReactiveCurrentEntity(", + "public static CultMeshReactiveDocument ReactiveStationRefit(", "public static CultMeshReactiveDocument Reactive(", "AetheriaClientEveSurface surface", "public static CultMeshReactiveDocument ReactiveEveSurface(", diff --git a/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs b/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs index 48c655860..276581ebb 100644 --- a/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs +++ b/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs @@ -205,11 +205,11 @@ public sealed class AetheriaUnityObservedDockingIndex : IDisposable return; _currentEntity ??= AetheriaUnityRuntimeClientProvider - .Reactive("unity-observed-docking"); + .ReactiveCurrentEntity("unity-observed-docking"); _currentDocking ??= AetheriaUnityRuntimeClientProvider .ReactiveCurrentDocking("unity-observed-docking"); _stationRefit ??= AetheriaUnityRuntimeClientProvider - .Reactive("unity-observed-docking"); + .ReactiveStationRefit("unity-observed-docking"); } public void Dispose() diff --git a/Assets/Scripts/Gameplay/AetheriaUnityRuntimeClientProvider.cs b/Assets/Scripts/Gameplay/AetheriaUnityRuntimeClientProvider.cs index ce3bf4af2..fa8782307 100644 --- a/Assets/Scripts/Gameplay/AetheriaUnityRuntimeClientProvider.cs +++ b/Assets/Scripts/Gameplay/AetheriaUnityRuntimeClientProvider.cs @@ -124,6 +124,32 @@ public static class AetheriaUnityRuntimeClientProvider return RuntimeState(stateBoot, runtimeId).ReactiveCurrentDocking(); } + public static CultMeshReactiveDocument ReactiveCurrentEntity( + string runtimeId = "") + { + return RuntimeState(runtimeId).ReactiveCurrentEntity(); + } + + public static CultMeshReactiveDocument ReactiveCurrentEntity( + AetheriaRuntimeStateBootReport stateBoot, + string runtimeId = "") + { + return RuntimeState(stateBoot, runtimeId).ReactiveCurrentEntity(); + } + + public static CultMeshReactiveDocument ReactiveStationRefit( + string runtimeId = "") + { + return RuntimeState(runtimeId).ReactiveStationRefit(); + } + + public static CultMeshReactiveDocument ReactiveStationRefit( + AetheriaRuntimeStateBootReport stateBoot, + string runtimeId = "") + { + return RuntimeState(stateBoot, runtimeId).ReactiveStationRefit(); + } + public static CultMeshReactiveDocument Reactive( AetheriaRuntimeStateBootReport stateBoot, string runtimeId = "") diff --git a/Assets/Scripts/Tests/DaemonRuntimeDocumentTests.cs b/Assets/Scripts/Tests/DaemonRuntimeDocumentTests.cs index 6992d9234..abf5f8082 100644 --- a/Assets/Scripts/Tests/DaemonRuntimeDocumentTests.cs +++ b/Assets/Scripts/Tests/DaemonRuntimeDocumentTests.cs @@ -217,9 +217,9 @@ public class DaemonRuntimeDocumentTests using var verseHostSettingsReactive = client.State.Reactive(); using var zoneContactsReactive = client.State.Reactive(); using var currentZoneReactive = client.State.Reactive(); - using var currentEntityDocumentReactive = client.State.Reactive(); + using var currentEntityDocumentReactive = client.State.ReactiveCurrentEntity(); using var currentDockingReactive = client.State.ReactiveCurrentDocking(); - using var stationRefitReactive = client.State.Reactive(); + using var stationRefitReactive = client.State.ReactiveStationRefit(); using var zoneDetailsReactive = client.State.Reactive(0); using var selectedObjectReactive = client.State.Reactive(0); using var inventoryReactive = client.State.Reactive(0); @@ -229,7 +229,7 @@ public class DaemonRuntimeDocumentTests using var renderSplatsViewportReactive = client.State.Reactive(viewport); using var playerHudCatalog = client.State.Reactive(); using var playerHudSettings = client.State.Reactive(); - using var playerHudEntity = client.State.Reactive(); + using var playerHudEntity = client.State.ReactiveCurrentEntity(); var gameSurface = ReadLatest(client.State.Document(AetheriaClientEveSurface.Game)); var gameTuiSurface = ReadLatest(client.State.Document(AetheriaClientEveSurface.GameTui)); var editorSurface = ReadLatest(client.State.Document(AetheriaClientEveSurface.Editor)); diff --git a/Assets/Scripts/UI/HUD/SchematicDisplay.cs b/Assets/Scripts/UI/HUD/SchematicDisplay.cs index 032087fa0..969c440e9 100644 --- a/Assets/Scripts/UI/HUD/SchematicDisplay.cs +++ b/Assets/Scripts/UI/HUD/SchematicDisplay.cs @@ -361,7 +361,7 @@ public class SchematicDisplay : MonoBehaviour try { _currentEntity = AetheriaUnityRuntimeClientProvider - .Reactive("unity-schematic-display"); + .ReactiveCurrentEntity("unity-schematic-display"); } catch (Exception ex) { diff --git a/Assets/Scripts/UI/Menu/InventoryMenu.cs b/Assets/Scripts/UI/Menu/InventoryMenu.cs index 283f2d8d6..f70682e67 100644 --- a/Assets/Scripts/UI/Menu/InventoryMenu.cs +++ b/Assets/Scripts/UI/Menu/InventoryMenu.cs @@ -932,7 +932,7 @@ public class InventoryMenu : MonoBehaviour try { _currentEntity = AetheriaUnityRuntimeClientProvider - .Reactive("unity-inventory-menu"); + .ReactiveCurrentEntity("unity-inventory-menu"); } catch (Exception ex) { @@ -950,7 +950,7 @@ public class InventoryMenu : MonoBehaviour try { _stationRefit = AetheriaUnityRuntimeClientProvider - .Reactive("unity-inventory-menu"); + .ReactiveStationRefit("unity-inventory-menu"); } catch (Exception ex) { diff --git a/Assets/Scripts/UI/Menu/InventoryPanel.cs b/Assets/Scripts/UI/Menu/InventoryPanel.cs index 5be54b1eb..b5ef9117f 100644 --- a/Assets/Scripts/UI/Menu/InventoryPanel.cs +++ b/Assets/Scripts/UI/Menu/InventoryPanel.cs @@ -1491,7 +1491,7 @@ private void Update() try { _currentEntity = AetheriaUnityRuntimeClientProvider - .Reactive("unity-inventory"); + .ReactiveCurrentEntity("unity-inventory"); } catch (Exception ex) { @@ -1509,7 +1509,7 @@ private void Update() try { _stationRefit = AetheriaUnityRuntimeClientProvider - .Reactive("unity-inventory"); + .ReactiveStationRefit("unity-inventory"); } catch (Exception ex) { diff --git a/Assets/Scripts/UI/Menu/TradeMenu.cs b/Assets/Scripts/UI/Menu/TradeMenu.cs index 9dd799e2c..01b453ce7 100644 --- a/Assets/Scripts/UI/Menu/TradeMenu.cs +++ b/Assets/Scripts/UI/Menu/TradeMenu.cs @@ -518,7 +518,7 @@ public class TradeMenu : MonoBehaviour try { _stationRefit = AetheriaUnityRuntimeClientProvider - .Reactive("unity-trade"); + .ReactiveStationRefit("unity-trade"); } catch (Exception ex) { diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs index 7245fbaa8..90de70eeb 100644 --- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs +++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs @@ -203,6 +203,26 @@ namespace GameCult.Aetheria.State.Verse return CurrentDocking().Reactive(); } + public CultMeshDocumentHandle CurrentEntityDocument() + { + return CurrentEntity; + } + + public CultMeshReactiveDocument ReactiveCurrentEntity() + { + return CurrentEntityDocument().Reactive(); + } + + public CultMeshDocumentHandle StationRefitDocument() + { + return StationRefit; + } + + public CultMeshReactiveDocument ReactiveStationRefit() + { + return StationRefitDocument().Reactive(); + } + public static bool TryResolveEveSurface( string? surfaceId, out AetheriaClientEveSurface surface)