From d25b9c959cc0bf3bb4594e8a4d4a8c097dba9498 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 28 Jun 2026 15:12:19 +0100 Subject: [PATCH] Split inventory docking state access --- Aetheria.State.Verify/Program.cs | 33 ++++++++++++------------ Assets/Scripts/UI/Menu/InventoryMenu.cs | 29 +++++++++++++-------- Assets/Scripts/UI/Menu/InventoryPanel.cs | 24 +++++++++++------ 3 files changed, 51 insertions(+), 35 deletions(-) diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index 63d1ee8eb..17300905a 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -4959,8 +4959,9 @@ static void RequireInventoryShipSettingsUseEveSurface(string root) "RequestEntityShutdownPerformance(", "latestCurrentEntity.EntityKey", "(float)latestCurrentEntity.ShutdownPerformance", - "TryResolveObservedDockingIndex(out var dockingIndex)", - "dockingIndex.TryResolveCurrentEntityDocument(out currentEntity)" + "AetheriaRuntimeCurrentEntitySession _currentEntity", + "ResolveCurrentEntity()", + "currentEntity = ResolveCurrentEntity();" }; var missingSymbols = requiredSymbols @@ -6285,8 +6286,8 @@ static void RequireInventoryDropdownUseEveSurface(string root) "_observedEntityIndex.TryResolveEntityByRecordKey", "TryResolveObservedDockingIndex(out var dockingIndex)", "dockingIndex.TryResolveCurrentDockingBay(out var resolvedDockingBay)", - "dockingIndex.ResolveStationRefit()", - "dockingIndex.TryResolveCurrentEntityKey(out currentEntityKey)", + "ResolveStationRefitDocument()", + "currentEntityKey = ResolveCurrentEntity()?.EntityKey ?? \"\"", "LoadoutRestoreOptions" }; @@ -6345,9 +6346,9 @@ static void RequireInventoryDropdownUseEveSurface(string root) !source.Contains("TryResolveCurrentDockingBayRow(out var currentDockingBay)", StringComparison.Ordinal) || !source.Contains("TryResolveObservedDockingIndex(out var dockingIndex)", StringComparison.Ordinal) || !source.Contains("TryResolveCurrentDockingBay(out var dockingBay)", StringComparison.Ordinal) || - !source.Contains("dockingIndex.TryResolveCurrentDockingBayRow(out dockingBay)", StringComparison.Ordinal) || - !source.Contains("dockingIndex.ResolveStationRefit()", StringComparison.Ordinal) || - !source.Contains("dockingIndex.TryResolveCurrentEntityKey(out currentEntityKey)", StringComparison.Ordinal) || + !source.Contains("dockingIndex.TryResolveCurrentDockingBay(out var resolvedDockingBay)", StringComparison.Ordinal) || + !source.Contains("ResolveStationRefitDocument()", StringComparison.Ordinal) || + !source.Contains("currentEntityKey = ResolveCurrentEntity()?.EntityKey ?? \"\"", StringComparison.Ordinal) || !source.Contains("currentDockingBay.DockingBayIndex", StringComparison.Ordinal) || !source.Contains("ResolveStationRefit()?.DockParentEntityKey", StringComparison.Ordinal) || source.Contains("var hasDockingBay = TryGetTypedCurrentDockingBayFacade", StringComparison.Ordinal) || @@ -6363,9 +6364,9 @@ static void RequireInventoryDropdownUseEveSurface(string root) !inventoryMenu.Contains("TryResolveCurrentDockingBay(out var dockingBay)", StringComparison.Ordinal) || !inventoryMenu.Contains("TryResolveObservedDockingIndex(out var dockingIndex)", StringComparison.Ordinal) || !inventoryMenu.Contains("dockingIndex.TryResolveCurrentDockingBay(out var resolvedDockingBay)", StringComparison.Ordinal) || - !inventoryMenu.Contains("dockingIndex.TryResolveCurrentEntityKey(out currentEntityKey)", StringComparison.Ordinal) || - !inventoryMenu.Contains("dockingIndex.TryResolveCurrentEntityDocument(out currentEntity)", StringComparison.Ordinal) || - !inventoryMenu.Contains("dockingIndex.ResolveStationRefit()", StringComparison.Ordinal) || + !inventoryMenu.Contains("currentEntityKey = ResolveCurrentEntity()?.EntityKey ?? \"\"", StringComparison.Ordinal) || + !inventoryMenu.Contains("currentEntity = ResolveCurrentEntity();", StringComparison.Ordinal) || + !inventoryMenu.Contains("ResolveStationRefitDocument()", StringComparison.Ordinal) || inventoryMenu.Contains("TryGetTypedCurrentDockingBayFacade", StringComparison.Ordinal) || inventoryMenu.Contains("TryResolveCurrentEntityFacade", StringComparison.Ordinal) || inventoryMenu.Contains("ResolveDockingState()?.CurrentDocking", StringComparison.Ordinal) || @@ -6375,7 +6376,7 @@ static void RequireInventoryDropdownUseEveSurface(string root) inventoryMenu.Contains("GameManager.DockingBay", StringComparison.Ordinal)) { throw new InvalidOperationException( - "InventoryMenu must resolve typed current-docking state through the shared observed docking index before adapting to Unity facades."); + "InventoryMenu must resolve typed current entity/refit state through managed sessions before adapting docking state to Unity objects."); } var requiredBuilderSymbols = new[] @@ -6530,8 +6531,8 @@ static void RequireStationRefitDockingBaysUseTypedProjection(string root) { "TryResolveCurrentDockingBayRow(out var currentDockingBay)", "AetheriaRuntimeStationDockingBayRow dockingBay", - "TryResolveObservedDockingIndex(out var dockingIndex)", - "dockingIndex.TryResolveCurrentDockingBayRow(out dockingBay)", + "ResolveStationRefitDocument()", + "refit.DockingBays ?? Array.Empty()", "currentDockingBay.DockingBayIndex" }; var missingPanelSymbols = requiredPanelSymbols @@ -6549,8 +6550,8 @@ static void RequireStationRefitDockingBaysUseTypedProjection(string root) { "TryResolveCurrentDockingBayRow(out AetheriaRuntimeStationDockingBayRow dockingBay)", "AetheriaRuntimeStationDockingBayRow dockingBay", - "TryResolveObservedDockingIndex(out var dockingIndex)", - "dockingIndex.TryResolveCurrentDockingBayRow(out dockingBay)" + "ResolveStationRefitDocument()", + "refit.DockingBays ?? Array.Empty()" }; var missingMenuSymbols = requiredMenuSymbols .Where(symbol => !inventoryMenu.Contains(symbol, StringComparison.Ordinal)) @@ -17644,7 +17645,7 @@ static void RequireDockedCurrentShipRequestAuthority(string root) } if (!inventoryPanel.Contains("TryResolveCurrentEntityKey(out var currentEntityKey)", StringComparison.Ordinal) || - !inventoryPanel.Contains("dockingIndex.TryResolveCurrentEntityKey(out currentEntityKey)", StringComparison.Ordinal) || + !inventoryPanel.Contains("currentEntityKey = ResolveCurrentEntity()?.EntityKey ?? \"\"", StringComparison.Ordinal) || inventoryPanel.Contains("AetheriaClientReactiveDockingState _reactiveDockingState", StringComparison.Ordinal) || inventoryPanel.Contains("GameManager.CurrentEntity", StringComparison.Ordinal)) { diff --git a/Assets/Scripts/UI/Menu/InventoryMenu.cs b/Assets/Scripts/UI/Menu/InventoryMenu.cs index 2432e43c1..a9f2753f9 100644 --- a/Assets/Scripts/UI/Menu/InventoryMenu.cs +++ b/Assets/Scripts/UI/Menu/InventoryMenu.cs @@ -65,6 +65,12 @@ public class InventoryMenu : MonoBehaviour public void SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex) { + if (!ReferenceEquals(_observedEntityIndex, observedEntityIndex)) + { + _observedDockingIndex?.Dispose(); + _observedDockingIndex = null; + } + _observedEntityIndex = observedEntityIndex; } // private int2 _dragCellOffset; @@ -729,22 +735,25 @@ public class InventoryMenu : MonoBehaviour private bool TryResolveCurrentDockingBayRow(out AetheriaRuntimeStationDockingBayRow dockingBay) { dockingBay = null; - return TryResolveObservedDockingIndex(out var dockingIndex) && - dockingIndex.TryResolveCurrentDockingBayRow(out dockingBay); + var refit = ResolveStationRefitDocument(); + if (refit?.IsDocked != true || refit.DockingBayIndex < 0) + return false; + + dockingBay = (refit.DockingBays ?? Array.Empty()) + .FirstOrDefault(row => row != null && row.DockingBayIndex == refit.DockingBayIndex); + return dockingBay != null; } private bool TryResolveCurrentEntityKey(out string currentEntityKey) { - currentEntityKey = ""; - return TryResolveObservedDockingIndex(out var dockingIndex) && - dockingIndex.TryResolveCurrentEntityKey(out currentEntityKey); + currentEntityKey = ResolveCurrentEntity()?.EntityKey ?? ""; + return !string.IsNullOrWhiteSpace(currentEntityKey); } private bool TryResolveCurrentEntityDocument(out AetheriaRuntimeCurrentEntityDocument currentEntity) { - currentEntity = null; - if (!TryResolveObservedDockingIndex(out var dockingIndex) || - !dockingIndex.TryResolveCurrentEntityDocument(out currentEntity)) + currentEntity = ResolveCurrentEntity(); + if (currentEntity == null) { Debug.LogWarning("Failed to read Aetheria current entity for inventory ship settings."); return false; @@ -755,9 +764,7 @@ public class InventoryMenu : MonoBehaviour private AetheriaRuntimeStationRefitDocument ResolveStationRefit() { - return TryResolveObservedDockingIndex(out var dockingIndex) - ? dockingIndex.ResolveStationRefit() - : null; + return ResolveStationRefitDocument(); } private bool TryResolveCurrentEntity(out Entity currentEntity) diff --git a/Assets/Scripts/UI/Menu/InventoryPanel.cs b/Assets/Scripts/UI/Menu/InventoryPanel.cs index 82560960b..de3f87156 100644 --- a/Assets/Scripts/UI/Menu/InventoryPanel.cs +++ b/Assets/Scripts/UI/Menu/InventoryPanel.cs @@ -88,6 +88,12 @@ public class InventoryPanel : MonoBehaviour, IPointerClickHandler public void SetObservedEntityIndex(AetheriaUnityObservedEntityIndex observedEntityIndex) { + if (!ReferenceEquals(_observedEntityIndex, observedEntityIndex)) + { + _observedDockingIndex?.Dispose(); + _observedDockingIndex = null; + } + _observedEntityIndex = observedEntityIndex; } @@ -1123,16 +1129,20 @@ private void Update() private bool TryResolveCurrentEntityKey(out string currentEntityKey) { - currentEntityKey = ""; - return TryResolveObservedDockingIndex(out var dockingIndex) && - dockingIndex.TryResolveCurrentEntityKey(out currentEntityKey); + currentEntityKey = ResolveCurrentEntity()?.EntityKey ?? ""; + return !string.IsNullOrWhiteSpace(currentEntityKey); } private bool TryResolveCurrentDockingBayRow(out AetheriaRuntimeStationDockingBayRow dockingBay) { dockingBay = null; - return TryResolveObservedDockingIndex(out var dockingIndex) && - dockingIndex.TryResolveCurrentDockingBayRow(out dockingBay); + var refit = ResolveStationRefitDocument(); + if (refit?.IsDocked != true || refit.DockingBayIndex < 0) + return false; + + dockingBay = (refit.DockingBays ?? Array.Empty()) + .FirstOrDefault(row => row != null && row.DockingBayIndex == refit.DockingBayIndex); + return dockingBay != null; } private bool TryResolveCurrentDockingBay(out EquippedCargoBay dockingBay) @@ -1150,9 +1160,7 @@ private void Update() private AetheriaRuntimeStationRefitDocument ResolveStationRefit() { - return TryResolveObservedDockingIndex(out var dockingIndex) - ? dockingIndex.ResolveStationRefit() - : null; + return ResolveStationRefitDocument(); } private bool TryResolveObservedDockingIndex(out AetheriaUnityObservedDockingIndex dockingIndex)