From f907b47df66059c7a35d55792cefd3f8bd76bf06 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 28 Jun 2026 22:55:45 +0100 Subject: [PATCH] Use reactive documents in sector details UI --- Aetheria.State.Verify/Program.cs | 79 +++++++++++++++++++----- Assets/Scripts/UI/Menu/SectorRenderer.cs | 14 ++--- 2 files changed, 71 insertions(+), 22 deletions(-) diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index d8bdee295..eaa4bd347 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -4553,9 +4553,9 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root) "ProjectZoneDetailsSurfaceState(", "AetheriaUnityRuntimeClientProvider.ResolveClient(", ".State", - ".ObserveSectorMap()", + ".ReactiveSectorMap()", ".Details", - ".ObserveZone(zoneIndex)", + ".ReactiveZone(zoneIndex)", "_zoneDetails?.Current", "AetheriaClient", "AetheriaRuntimeZoneDetailsSurfaceCommands.TryRead(request, out var command)", @@ -4573,6 +4573,30 @@ static void RequireSectorMapZoneDetailsUseEveSurface(string root) string.Join(", ", missingSymbols)); } + RequireReactiveTypedDocumentAccess( + source, + "SectorRenderer", + "AetheriaRuntimeSectorMapDocument", + "_sectorMap", + ".ReactiveSectorMap()", + "AetheriaRuntimeSectorMapSession", + ".ObserveSectorMap()"); + RequireReactiveTypedDocumentAccess( + source, + "SectorRenderer", + "AetheriaRuntimeCurrentZoneDocument", + "_currentZone", + ".ReactiveZone()", + "AetheriaRuntimeCurrentZoneSession", + ".ObserveZone()"); + RequireReactiveTypedDocumentAccess( + source, + "SectorRenderer", + "AetheriaRuntimeZoneDetailsDocument", + "_zoneDetails", + ".ReactiveZone(zoneIndex)", + "AetheriaRuntimeZoneDetailsSession", + ".ObserveZone(zoneIndex)"); RequireReactiveTypedDocumentAccess( source, "SectorRenderer", @@ -7718,12 +7742,13 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) "SectorRenderer.cs")); var requiredSectorRendererSharedDocumentSymbols = new[] { - "AetheriaRuntimeSectorMapSession _sectorMap", - "AetheriaRuntimeCurrentZoneSession _currentZone", - "AetheriaRuntimeZoneDetailsSession _zoneDetails", - ".ObserveSectorMap()", + "CultMeshReactiveDocument _sectorMap", + "CultMeshReactiveDocument _currentZone", + "CultMeshReactiveDocument _zoneDetails", + ".ReactiveSectorMap()", ".Current", - ".ObserveZone(zoneIndex)", + ".ReactiveZone()", + ".ReactiveZone(zoneIndex)", "_sectorMap?.Dispose()", "_currentZone?.Dispose()", "_zoneDetails?.Dispose()", @@ -7739,6 +7764,30 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) string.Join(", ", missingSectorRendererSharedDocumentSymbols)); } + RequireReactiveTypedDocumentAccess( + sectorRenderer, + "SectorRenderer", + "AetheriaRuntimeSectorMapDocument", + "_sectorMap", + ".ReactiveSectorMap()", + "AetheriaRuntimeSectorMapSession", + ".ObserveSectorMap()"); + RequireReactiveTypedDocumentAccess( + sectorRenderer, + "SectorRenderer", + "AetheriaRuntimeCurrentZoneDocument", + "_currentZone", + ".ReactiveZone()", + "AetheriaRuntimeCurrentZoneSession", + ".ObserveZone()"); + RequireReactiveTypedDocumentAccess( + sectorRenderer, + "SectorRenderer", + "AetheriaRuntimeZoneDetailsDocument", + "_zoneDetails", + ".ReactiveZone(zoneIndex)", + "AetheriaRuntimeZoneDetailsSession", + ".ObserveZone(zoneIndex)"); RequireReactiveTypedDocumentAccess( sectorRenderer, "SectorRenderer", @@ -7758,11 +7807,11 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) var forbiddenSectorRendererSharedDocumentSymbols = new[] { - "CultMeshReactiveDocument _sectorMap", - "CultMeshReactiveDocument _currentZone", - "CultMeshReactiveDocument _zoneDetails", - ".ReactiveSectorMap()", - ".ReactiveZone(zoneIndex)" + "AetheriaRuntimeSectorMapSession _sectorMap", + "AetheriaRuntimeCurrentZoneSession _currentZone", + "AetheriaRuntimeZoneDetailsSession _zoneDetails", + ".ObserveSectorMap()", + ".ObserveZone(zoneIndex)" }; var sectorRendererRawDocumentHits = forbiddenSectorRendererSharedDocumentSymbols .Where(symbol => sectorRenderer.Contains(symbol, StringComparison.Ordinal)) @@ -7770,7 +7819,7 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root) if (sectorRendererRawDocumentHits.Length > 0) { throw new InvalidOperationException( - "SectorRenderer still owns raw map/catalog/settings CultMesh documents instead of managed sessions: " + + "SectorRenderer still routes map/current-zone/details through session wrappers instead of managed reactive typed documents: " + string.Join(", ", sectorRendererRawDocumentHits)); } @@ -13823,9 +13872,9 @@ static void RequireUnityObserverDoesNotTickLocalSimulation(string root) !mapRenderer.Contains(".ReactivePlayer()", StringComparison.Ordinal) || !sectorRenderer.Contains("AetheriaUnityRuntimeClientProvider.ResolveClient(", StringComparison.Ordinal) || !sectorRenderer.Contains(".State", StringComparison.Ordinal) || - !sectorRenderer.Contains(".ObserveSectorMap()", StringComparison.Ordinal) || + !sectorRenderer.Contains(".ReactiveSectorMap()", StringComparison.Ordinal) || !sectorRenderer.Contains(".Details", StringComparison.Ordinal) || - !sectorRenderer.Contains(".ObserveZone(zoneIndex)", StringComparison.Ordinal) || + !sectorRenderer.Contains(".ReactiveZone(zoneIndex)", StringComparison.Ordinal) || !sectorRenderer.Contains(".Current", StringComparison.Ordinal) || !sectorRenderer.Contains(".Settings", StringComparison.Ordinal) || !sectorRenderer.Contains("ResolveClient().State.ReactiveCatalog()", StringComparison.Ordinal) || diff --git a/Assets/Scripts/UI/Menu/SectorRenderer.cs b/Assets/Scripts/UI/Menu/SectorRenderer.cs index 8f0c6077d..21e21f16a 100644 --- a/Assets/Scripts/UI/Menu/SectorRenderer.cs +++ b/Assets/Scripts/UI/Menu/SectorRenderer.cs @@ -49,10 +49,10 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS private string _clientStatePath = ""; private CultMeshReactiveDocument _catalog; private CultMeshReactiveDocument _playerSettings; - private AetheriaRuntimeSectorMapSession _sectorMap; - private AetheriaRuntimeCurrentZoneSession _currentZone; + private CultMeshReactiveDocument _sectorMap; + private CultMeshReactiveDocument _currentZone; private int _zoneDetailsIndex = -1; - private AetheriaRuntimeZoneDetailsSession _zoneDetails; + private CultMeshReactiveDocument _zoneDetails; private readonly AetheriaEveUnitySurfaceChrome _zoneDetailsSurfaceChrome = new AetheriaEveUnitySurfaceChrome { RootAlignItems = Align.FlexEnd, @@ -176,8 +176,8 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS { _sectorMap ??= ResolveClient() .State - .ObserveSectorMap(); - var sectorMap = _sectorMap.Current; + .ReactiveSectorMap(); + var sectorMap = _sectorMap?.Current; return (sectorMap?.Zones ?? Array.Empty()) .FirstOrDefault(zone => zone.ZoneIndex == zoneIndex); } @@ -206,7 +206,7 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS var nextZoneDetails = ResolveClient() .State .Details - .ObserveZone(zoneIndex); + .ReactiveZone(zoneIndex); _zoneDetails?.Dispose(); _zoneDetailsIndex = zoneIndex; _zoneDetails = nextZoneDetails; @@ -325,7 +325,7 @@ public class SectorRenderer : MonoBehaviour, IBeginDragHandler, IDragHandler, IS _currentZone ??= ResolveClient() .State .Current - .ObserveZone(); + .ReactiveZone(); } catch (Exception ex) {