From d54af47ff5dac31caa6fd056bc1a30c07dfaab1e Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 28 Jun 2026 16:00:52 +0100 Subject: [PATCH] Use typed docking documents in Unity docking index --- Aetheria.State.Verify/Program.cs | 23 +++++++++++++++---- .../AetheriaUnityObservedDockingIndex.cs | 15 +++++++++++- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index 94525b2b5..838c6a145 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -7157,8 +7157,13 @@ static bool HasManagedDockingSnapshotAccess(string source) } if (source.Contains("AetheriaRuntimeObservedDockingState", StringComparison.Ordinal) && - source.Contains("ResolveClient().State.CurrentDocking()", StringComparison.Ordinal) && - !source.Contains("AetheriaUnityObservedDockingIndex", StringComparison.Ordinal) && + source.Contains("var state = _resolveClient()?.State;", StringComparison.Ordinal) && + source.Contains("state.Current.LatestEntity()", StringComparison.Ordinal) && + source.Contains("state.Current.LatestDocking()", StringComparison.Ordinal) && + source.Contains("state.LatestStationRefit()", StringComparison.Ordinal) && + !source.Contains("State?.CurrentDocking()", StringComparison.Ordinal) && + !source.Contains(".State.CurrentDocking()", StringComparison.Ordinal) && + !source.Contains("ResolveClient().State.CurrentDocking()", StringComparison.Ordinal) && !source.Contains("TryResolveObservedDockingIndex(out var dockingIndex)", StringComparison.Ordinal) && !source.Contains("AetheriaClientReactiveDockingState _dockingState", StringComparison.Ordinal) && !source.Contains(".ReactiveDockingState()", StringComparison.Ordinal)) @@ -7176,7 +7181,12 @@ static bool HasManagedDockingSnapshotAccess(string source) return source.Contains("public sealed class AetheriaUnityObservedDockingIndex", StringComparison.Ordinal) && source.Contains("AetheriaRuntimeObservedDockingState", StringComparison.Ordinal) && - source.Contains("_resolveClient()?.State?.CurrentDocking()", StringComparison.Ordinal) && + source.Contains("var state = _resolveClient()?.State;", StringComparison.Ordinal) && + source.Contains("state.Current.LatestEntity()", StringComparison.Ordinal) && + source.Contains("state.Current.LatestDocking()", StringComparison.Ordinal) && + source.Contains("state.LatestStationRefit()", StringComparison.Ordinal) && + !source.Contains("State?.CurrentDocking()", StringComparison.Ordinal) && + !source.Contains(".State.CurrentDocking()", StringComparison.Ordinal) && !source.Contains("CultMeshReactiveDocument _currentEntity", StringComparison.Ordinal) && !source.Contains("CultMeshReactiveDocument _currentDocking", StringComparison.Ordinal) && !source.Contains("CultMeshReactiveDocument _stationRefit", StringComparison.Ordinal) && @@ -12729,7 +12739,10 @@ static void RequireMainMenuContinueRunState(string root) { "public sealed class AetheriaUnityObservedDockingIndex", "AetheriaRuntimeObservedDockingState", - "_resolveClient()?.State?.CurrentDocking()", + "var state = _resolveClient()?.State;", + "state.Current.LatestEntity()", + "state.Current.LatestDocking()", + "state.LatestStationRefit()", "public bool IsEntityUndocked(Entity entity)", "public bool TryResolveDockingBay(", "out AetheriaRuntimeCurrentDockingDocument docking", @@ -12751,6 +12764,8 @@ static void RequireMainMenuContinueRunState(string root) "CultMeshReactiveDocument _currentEntity", "CultMeshReactiveDocument _currentDocking", "CultMeshReactiveDocument _stationRefit", + "State?.CurrentDocking()", + ".State.CurrentDocking()", "state.ReactiveEntity()", "state.ReactiveDocking()", "state.ReactiveStationRefit()" diff --git a/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs b/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs index cc5ca1455..fd71db566 100644 --- a/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs +++ b/Assets/Scripts/Gameplay/AetheriaUnityObservedDockingIndex.cs @@ -167,7 +167,20 @@ public sealed class AetheriaUnityObservedDockingIndex : IDisposable docking = null; try { - docking = _resolveClient()?.State?.CurrentDocking(); + var state = _resolveClient()?.State; + if (state == null) + return false; + + var currentEntity = state.Current.LatestEntity(); + var currentDocking = state.Current.LatestDocking(); + var stationRefit = state.LatestStationRefit(); + if (currentDocking == null || stationRefit == null) + return false; + + docking = new AetheriaRuntimeObservedDockingState( + currentEntity, + currentDocking, + stationRefit); return docking != null; } catch