From 6e16e2f6054bd003cdf5143de98bff4889d480fa Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 28 Jun 2026 22:19:26 +0100 Subject: [PATCH] Use reactive shared documents in trade menu --- Aetheria.State.Verify/Program.cs | 44 +++++++++++------------------ Assets/Scripts/UI/Menu/TradeMenu.cs | 9 +++--- 2 files changed, 21 insertions(+), 32 deletions(-) diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index c0f015bc0..a982e6ab1 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -7628,19 +7628,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "UI", "Menu", "TradeMenu.cs")); - var requiredTradeMenuSharedDocumentSymbols = new[] - { - "AetheriaRuntimeCatalogSession _catalog", - "AetheriaRuntimePlayerSettingsSession _playerSettings", - "ResolveClient().State.ObserveCatalog()", - ".Settings", - ".ObservePlayer()", - "_catalog?.Dispose()", - "_playerSettings?.Dispose()", - "_catalog?.Current", - "_playerSettings?.Current", - "private void OnDestroy()" - }; + var requiredTradeMenuSharedDocumentSymbols = new[] { "private void OnDestroy()" }; var missingTradeMenuSharedDocumentSymbols = requiredTradeMenuSharedDocumentSymbols .Where(symbol => !tradeMenu.Contains(symbol, StringComparison.Ordinal)) .ToArray(); @@ -7651,22 +7639,22 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) string.Join(", ", missingTradeMenuSharedDocumentSymbols)); } - var forbiddenTradeMenuSharedDocumentSymbols = new[] - { - "CultMeshReactiveDocument _catalog", - "CultMeshReactiveDocument _playerSettings", + RequireReactiveTypedDocumentAccess( + tradeMenu, + "TradeMenu", + "AetheriaRuntimeCatalogSnapshot", + "_catalog", "ResolveClient().State.ReactiveCatalog()", - ".ReactivePlayer()" - }; - var tradeMenuRawDocumentHits = forbiddenTradeMenuSharedDocumentSymbols - .Where(symbol => tradeMenu.Contains(symbol, StringComparison.Ordinal)) - .ToArray(); - if (tradeMenuRawDocumentHits.Length > 0) - { - throw new InvalidOperationException( - "TradeMenu still owns raw catalog/settings CultMesh documents instead of managed sessions: " + - string.Join(", ", tradeMenuRawDocumentHits)); - } + "AetheriaRuntimeCatalogSession", + "ResolveClient().State.ObserveCatalog()"); + RequireReactiveTypedDocumentAccess( + tradeMenu, + "TradeMenu", + "AetheriaRuntimePlayerSettingsDocument", + "_playerSettings", + ".ReactivePlayer()", + "AetheriaRuntimePlayerSettingsSession", + ".ObservePlayer()"); var inventoryMenu = File.ReadAllText(Path.Combine( root, diff --git a/Assets/Scripts/UI/Menu/TradeMenu.cs b/Assets/Scripts/UI/Menu/TradeMenu.cs index 51911668d..6e3f0aecc 100644 --- a/Assets/Scripts/UI/Menu/TradeMenu.cs +++ b/Assets/Scripts/UI/Menu/TradeMenu.cs @@ -6,6 +6,7 @@ using System.Text.RegularExpressions; using GameCult.Aetheria.EveRuntime; using GameCult.Aetheria.State.Verse; using GameCult.Eve.Surface; +using GameCult.Mesh; using TMPro; using UnityEngine; using UnityEngine.UI; @@ -37,8 +38,8 @@ public class TradeMenu : MonoBehaviour private UIDocument _rowActionSurfaceDocument; private UIDocument _tradeItemSurfaceDocument; private string _clientStatePath = ""; - private AetheriaRuntimeCatalogSession _catalog; - private AetheriaRuntimePlayerSettingsSession _playerSettings; + private CultMeshReactiveDocument _catalog; + private CultMeshReactiveDocument _playerSettings; private readonly AetheriaEveUnitySurfaceChrome _cargoSelectorSurfaceChrome = PanelChrome(360f, 420f, Align.FlexEnd); private readonly AetheriaEveUnitySurfaceChrome _filterSurfaceChrome = PanelChrome(420f, 520f, Align.FlexStart); private readonly AetheriaEveUnitySurfaceChrome _rowActionSurfaceChrome = PanelChrome(320f, 360f, Align.FlexStart); @@ -625,7 +626,7 @@ public class TradeMenu : MonoBehaviour try { - _catalog = ResolveClient().State.ObserveCatalog(); + _catalog = ResolveClient().State.ReactiveCatalog(); } catch (Exception ex) { @@ -645,7 +646,7 @@ public class TradeMenu : MonoBehaviour _playerSettings = ResolveClient() .State .Settings - .ObservePlayer(); + .ReactivePlayer(); } catch (Exception ex) {