Route player HUD through managed sessions
This commit is contained in:
parent
2c68dcc59e
commit
df65dbcb70
3 changed files with 59 additions and 12 deletions
|
|
@ -7294,6 +7294,12 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
|
|||
"UI",
|
||||
"HUD",
|
||||
"SchematicDisplay.cs"));
|
||||
var playerHudState = File.ReadAllText(Path.Combine(
|
||||
root,
|
||||
"Packages",
|
||||
"org.gamecult.aetheria.state",
|
||||
"Runtime",
|
||||
"AetheriaRuntimePlayerHudState.cs"));
|
||||
var requiredSchematicDisplaySymbols = new[]
|
||||
{
|
||||
"AetheriaRuntimePlayerHudSession _playerHud",
|
||||
|
|
@ -7332,6 +7338,48 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
|
|||
string.Join(", ", schematicDisplayHits));
|
||||
}
|
||||
|
||||
var requiredPlayerHudSessionSymbols = new[]
|
||||
{
|
||||
"private readonly AetheriaRuntimeCatalogSession _catalog;",
|
||||
"private readonly AetheriaRuntimePlayerSettingsSession _playerSettings;",
|
||||
"private readonly AetheriaRuntimeCurrentEntitySession _currentEntity;",
|
||||
"public AetheriaRuntimePlayerHudSession(",
|
||||
"AetheriaRuntimeCatalogSession catalog",
|
||||
"AetheriaRuntimePlayerSettingsSession playerSettings",
|
||||
"AetheriaRuntimeCurrentEntitySession currentEntity",
|
||||
"public AetheriaRuntimeCatalogSnapshot? Catalog => _catalog.Current;",
|
||||
"public AetheriaRuntimePlayerSettingsDocument? PlayerSettings => _playerSettings.Current;",
|
||||
"public AetheriaRuntimeCurrentEntityDocument? CurrentEntity => _currentEntity.Current;"
|
||||
};
|
||||
var missingPlayerHudSessionSymbols = requiredPlayerHudSessionSymbols
|
||||
.Where(symbol => !playerHudState.Contains(symbol, StringComparison.Ordinal))
|
||||
.ToArray();
|
||||
if (missingPlayerHudSessionSymbols.Length > 0)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"AetheriaRuntimePlayerHudSession must compose named managed sessions instead of owning raw reactive documents: " +
|
||||
string.Join(", ", missingPlayerHudSessionSymbols));
|
||||
}
|
||||
|
||||
if (playerHudState.Contains("CultMeshReactiveDocument<", StringComparison.Ordinal) ||
|
||||
playerHudState.Contains("using GameCult.Mesh;", StringComparison.Ordinal))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"AetheriaRuntimePlayerHudSession reintroduced raw CultMesh reactive document ownership.");
|
||||
}
|
||||
|
||||
if (!clientState.Contains("var catalog = ObserveCatalog(options);", StringComparison.Ordinal) ||
|
||||
!clientState.Contains("AetheriaRuntimePlayerSettingsSession? playerSettings = null;", StringComparison.Ordinal) ||
|
||||
!clientState.Contains("AetheriaRuntimeCurrentEntitySession? currentEntity = null;", StringComparison.Ordinal) ||
|
||||
!clientState.Contains("playerSettings = Settings.ObservePlayer(options);", StringComparison.Ordinal) ||
|
||||
!clientState.Contains("currentEntity = Current.ObserveEntity(options);", StringComparison.Ordinal) ||
|
||||
clientState.Contains("playerSettings = Settings.ReactivePlayer(options);", StringComparison.Ordinal) ||
|
||||
clientState.Contains("currentEntity = Current.ReactiveEntity(options);", StringComparison.Ordinal))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"AetheriaClientState.ObservePlayerHud() must compose named managed sessions instead of raw reactive CultMesh documents.");
|
||||
}
|
||||
|
||||
var volumeCloudRenderer = File.ReadAllText(Path.Combine(
|
||||
root,
|
||||
"Assets",
|
||||
|
|
|
|||
Loading…
Reference in a new issue