diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index 1fb3e7fb5..30728941c 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -4724,8 +4724,8 @@ static void RequireRuntimeMenuTabsUseEveSurface(string root) "new AetheriaRuntimeMenuTabModelOption(", "ResolveVisibleTabs(", "SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex)", - "AetheriaRuntimeObservedDockingState", - "ResolveClient().State.CurrentDocking()", + "AetheriaRuntimeCurrentDockingDocument", + "ResolveClient().State.Current.LatestDocking()", "docking.IsDocked", "AetheriaClient", "AetheriaUnityRuntimeClientProvider.ResolveClient(", @@ -4781,6 +4781,8 @@ static void RequireRuntimeMenuTabsUseEveSurface(string root) "ResolveTabSurfaceDocument(", "new EveUiToolkitSurfaceLowerer()", "string.Equals(request.Command, AetheriaRuntimeMenuTabsSurfaceBuilder.CommandFor(", + "ResolveClient().State.CurrentDocking()", + "AetheriaRuntimeObservedDockingState", "ProjectTabSurfaceState(", "ProjectTabSurface(", "AetheriaRuntimeMenuTabsSurfaceBuilder.Project(", @@ -7058,6 +7060,7 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root) "public AetheriaClientCurrentState Current { get; }", "public CultMeshDocumentHandle StationRefit { get; }", "public CultMeshDocumentHandle Docking { get; }", + "public AetheriaRuntimeCurrentDockingDocument LatestDocking()", "public CultMeshReactiveDocument ReactiveDocking(", "public CultMeshReactiveDocument ReactiveStationRefit(", "public AetheriaRuntimeCurrentDockingSession ObserveDocking(", @@ -7141,6 +7144,15 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root) static bool HasManagedDockingSnapshotAccess(string source) { + if (source.Contains("AetheriaRuntimeCurrentDockingDocument", StringComparison.Ordinal) && + source.Contains("ResolveClient().State.Current.LatestDocking()", StringComparison.Ordinal) && + !source.Contains("ResolveClient().State.CurrentDocking()", StringComparison.Ordinal) && + !source.Contains("AetheriaClientReactiveDockingState _dockingState", StringComparison.Ordinal) && + !source.Contains(".ReactiveDockingState()", StringComparison.Ordinal)) + { + return true; + } + if (source.Contains("AetheriaRuntimeObservedDockingState", StringComparison.Ordinal) && source.Contains("ResolveClient().State.CurrentDocking()", StringComparison.Ordinal) && !source.Contains("AetheriaUnityObservedDockingIndex", StringComparison.Ordinal) && diff --git a/Assets/Scripts/UI/Menu/MenuPanel.cs b/Assets/Scripts/UI/Menu/MenuPanel.cs index aef5cc1d1..ac292ce22 100644 --- a/Assets/Scripts/UI/Menu/MenuPanel.cs +++ b/Assets/Scripts/UI/Menu/MenuPanel.cs @@ -170,12 +170,12 @@ public class MenuPanel : MonoBehaviour .ToArray(); } - private bool TryResolveCurrentDocking(out AetheriaRuntimeObservedDockingState docking) + private bool TryResolveCurrentDocking(out AetheriaRuntimeCurrentDockingDocument docking) { docking = null; try { - docking = ResolveClient().State.CurrentDocking(); + docking = ResolveClient().State.Current.LatestDocking(); return docking != null; } catch (Exception ex) diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs index 33d98ad90..76f311a53 100644 --- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs +++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaClientState.cs @@ -956,6 +956,16 @@ namespace GameCult.Aetheria.State.Verse return new AetheriaRuntimeCurrentEntitySession(ReactiveEntity(options)); } + public Task LatestDockingAsync() + { + return Docking.LatestAsync(); + } + + public AetheriaRuntimeCurrentDockingDocument LatestDocking() + { + return LatestDockingAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + public Task> ReactiveDockingAsync( CultMeshReactiveDocumentOptions? options = null) {