Centralize gameplay boot state sessions

This commit is contained in:
Meta Vens 2026-06-28 14:27:42 +01:00
commit 3917be7d86
2 changed files with 30 additions and 16 deletions

View file

@ -8634,10 +8634,10 @@ static void RequireClientTargetBootAuthority(string root)
"stateBoot.StateFileExists",
"AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)",
".State",
".ReactiveCatalog()",
"runtimeCatalogDocument.Current",
".ReactiveSectorMap()",
"sectorMapDocument.Current",
".ObserveCatalog()",
"runtimeCatalogSession.Current",
".ObserveSectorMap()",
"sectorMapSession.Current",
"new ItemManager(",
"new AetheriaUnityLoadoutItemProjector(itemManager, runtimeCatalog)",
"ZoneRenderer.SetDroppedPickupItemProjector(loadoutItemProjector.CreateLoadoutItem)",
@ -8657,6 +8657,13 @@ static void RequireClientTargetBootAuthority(string root)
string.Join(", ", missingGameplayBootShellSymbols));
}
if (gameplayBootShell.Contains(".ReactiveCatalog()", StringComparison.Ordinal) ||
gameplayBootShell.Contains(".ReactiveSectorMap()", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"AetheriaUnityGameplayBootShell still opens raw reactive catalog/sector map documents instead of managed sessions.");
}
var requiredPresenterSymbols = new[]
{
"AetheriaRuntimeStateBoot.Inspect(",
@ -15228,10 +15235,10 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
"AetheriaRuntimeStateBoot.Inspect(AetheriaUnityRuntimePaths.GameDataDirectory)",
"AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)",
".State",
".ReactiveCatalog()",
"runtimeCatalogDocument.Current",
".ReactiveSectorMap()",
"sectorMapDocument.Current",
".ObserveCatalog()",
"runtimeCatalogSession.Current",
".ObserveSectorMap()",
"sectorMapSession.Current",
"new ItemManager(",
"new AetheriaUnityLoadoutItemProjector(itemManager, runtimeCatalog)",
"ZoneRenderer.SetDroppedPickupItemProjector(loadoutItemProjector.CreateLoadoutItem)",
@ -15253,6 +15260,13 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
string.Join(", ", missingGameplayBootShellSymbols));
}
if (gameplayBootShell.Contains(".ReactiveCatalog()", StringComparison.Ordinal) ||
gameplayBootShell.Contains(".ReactiveSectorMap()", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"AetheriaUnityGameplayBootShell still opens raw reactive catalog/sector map documents instead of managed sessions.");
}
var requiredRuntimeClientProviderSymbols = new[]
{
"public static class AetheriaUnityRuntimeClientProvider",
@ -15680,10 +15694,10 @@ static void RequireRuntimeStateReaderOwnsUnityStateAcquisition(string root)
var requiredGameplayBootSymbols = new[]
{
".ReactiveCatalog()",
"runtimeCatalogDocument.Current",
".ReactiveSectorMap()",
"sectorMapDocument.Current",
".ObserveCatalog()",
"runtimeCatalogSession.Current",
".ObserveSectorMap()",
"sectorMapSession.Current",
"Galaxy.ProjectObservedSectorMap(",
"sectorMap.IsTutorial",
"sectorMap.GenerationSeed",

View file

@ -36,12 +36,12 @@ public sealed class AetheriaUnityGameplayBootShell
var aetheria = AetheriaUnityRuntimeClientProvider.ResolveClient(stateBoot.StateFilePath, stateBoot.RuntimeId)
.State;
using var runtimeCatalogDocument = aetheria.ReactiveCatalog();
var runtimeCatalog = runtimeCatalogDocument.Current;
using var runtimeCatalogSession = aetheria.ObserveCatalog();
var runtimeCatalog = runtimeCatalogSession.Current;
if (runtimeCatalog == null)
throw new InvalidOperationException("Aetheria typed runtime catalog is required before gameplay boot.");
using var sectorMapDocument = aetheria.ReactiveSectorMap();
var sectorMap = sectorMapDocument.Current;
using var sectorMapSession = aetheria.ObserveSectorMap();
var sectorMap = sectorMapSession.Current;
if (sectorMap == null)
throw new InvalidOperationException("Aetheria typed sector map is required before gameplay boot.");