Remove one-shot docking state helper

This commit is contained in:
Meta Vens 2026-06-29 01:55:04 +01:00
commit 1bf8a0be2a
3 changed files with 21 additions and 14 deletions

View file

@ -7169,6 +7169,13 @@ static void RequireMenuDockingUsesManagedTypedSnapshot(string root)
string.Join(", ", forbiddenClientHits));
}
if (clientState.Contains("public AetheriaRuntimeObservedDockingState? CurrentDocking(", StringComparison.Ordinal) ||
clientState.Contains("AetheriaRuntimeObservedDockingState.TryCreateCurrent(entity, docking, refit", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"AetheriaClientState must not expose one-shot observed docking aggregation; callers should hold the managed typed docking documents they need.");
}
var menuPaths = new[]
{
Path.Combine(root, "Assets", "Scripts", "UI", "Menu", "InventoryMenu.cs"),
@ -8109,6 +8116,7 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
}
var clientState = File.ReadAllText(clientStatePath);
var daemonRuntimeDocumentTests = File.ReadAllText(daemonRuntimeDocumentTestsPath);
var topLevelClientState = clientState.Split(
"public sealed class AetheriaClientDaemonState",
StringSplitOptions.None)[0];
@ -8117,7 +8125,6 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
"public Task<TDocument> LatestAsync<TDocument>()",
"public TDocument Latest<TDocument>()",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public AetheriaRuntimeObservedDockingState? CurrentDocking(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
"public CultMeshReactiveDocument<TDocument> Reactive<TDocument>(",
@ -8423,6 +8430,13 @@ static void RequireAetheriaManagedStateAccessorsCoverDomainDocuments(string root
"Observed docking state still samples legacy session wrappers instead of direct reactive CultMesh documents.");
}
if (!daemonRuntimeDocumentTests.Contains("AetheriaRuntimeObservedDockingState.TryCreateCurrent(", StringComparison.Ordinal) ||
daemonRuntimeDocumentTests.Contains("client.State.CurrentDocking()", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"Daemon runtime document tests must teach observed docking composition from caller-owned managed reactive typed documents.");
}
if (observedDaemonState.Contains("state.LatestFrame.ReactiveAsync", StringComparison.Ordinal) ||
observedDaemonState.Contains("state.LatestSoaView.ReactiveAsync", StringComparison.Ordinal) ||
observedDaemonState.Contains("AetheriaRuntimeReactiveObservedDaemonState", StringComparison.Ordinal) ||
@ -13218,7 +13232,7 @@ static void RequireMainMenuContinueRunState(string root)
if (observedDockingHits.Length > 0)
{
throw new InvalidOperationException(
"Observed docking state composition must live in AetheriaClientState.CurrentDocking(), not the Unity docking index: " +
"Observed docking state composition must use owned managed reactive typed documents in AetheriaUnityObservedDockingIndex: " +
string.Join(", ", observedDockingHits));
}

View file

@ -239,7 +239,11 @@ public class DaemonRuntimeDocumentTests
.GetAwaiter()
.GetResult();
var stationRefit = client.State.Latest<AetheriaRuntimeStationRefitDocument>();
var observedDocking = client.State.CurrentDocking();
Assert.IsTrue(AetheriaRuntimeObservedDockingState.TryCreateCurrent(
currentEntityDocumentReactive,
currentDockingReactive,
stationRefitReactive,
out var observedDocking));
using var reactiveGameSurface = client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Game);
using var reactiveGameTuiSurface = client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.GameTui);
using var reactiveEditorSurface = client.State.Reactive<global::Aetheria.State.Documents.EveSurfaceState>(AetheriaClientEveSurface.Editor);

View file

@ -226,17 +226,6 @@ namespace GameCult.Aetheria.State.Verse
: null;
}
public AetheriaRuntimeObservedDockingState? CurrentDocking(
CultMeshReactiveDocumentOptions? options = null)
{
using var entity = Reactive<AetheriaRuntimeCurrentEntityDocument>(options);
using var docking = Reactive<AetheriaRuntimeCurrentDockingDocument>(options);
using var refit = Reactive<AetheriaRuntimeStationRefitDocument>(options);
return AetheriaRuntimeObservedDockingState.TryCreateCurrent(entity, docking, refit, out var current)
? current
: null;
}
public CultMeshDocumentHandle<TDocument> Document<TDocument>(AetheriaClientEveSurface surface)
where TDocument : class
{