refactor(settings): own two-phase runtime settings
Move pre-window loading, startup application, live settings mutation, toon context, quality reapply, and SettingsVM loans behind one RuntimeSettingsController. Preserve retail command behavior, ordered target publication, draft semantics, and retryable failure convergence while removing duplicate GameWindow state and feature bodies. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
4eae9b4f5a
commit
fec0d94148
24 changed files with 2379 additions and 599 deletions
|
|
@ -15,11 +15,10 @@ public sealed class GameWindowSlice8BoundaryTests
|
|||
|
||||
AssertAppearsInOrder(
|
||||
body,
|
||||
"startupStore.LoadDisplay()",
|
||||
"QualitySettings.WithEnvOverrides(startupBase)",
|
||||
"_displayFramePacing.InitializeStartup(startupDisplay.VSync)",
|
||||
"RuntimeSettingsSnapshot startup = _runtimeSettings.Startup",
|
||||
"_displayFramePacing.InitializeStartup(startup.Display.VSync)",
|
||||
"VSync = startupPacing.UseVSync",
|
||||
"Samples = startupQuality.MsaaSamples",
|
||||
"Samples = startup.Quality.MsaaSamples",
|
||||
"Window.Create(options)",
|
||||
"_displayFramePacing.BindSurface(",
|
||||
"_windowCallbacks = SilkWindowCallbackBinding.Create(",
|
||||
|
|
@ -66,7 +65,8 @@ public sealed class GameWindowSlice8BoundaryTests
|
|||
"_cameraPointerInput = AcDream.App.Input.CameraPointerInputController.Create(",
|
||||
"_cameraPointerInput.AttachRaw();",
|
||||
"_dats = RuntimeDatCollectionFactory.OpenReadOnly(_datDir);",
|
||||
"LoadAndApplyPersistedSettings();",
|
||||
"_runtimeSettings.ApplyStartup(",
|
||||
"new RuntimeSettingsStartupTargets(",
|
||||
"_uiHost = new AcDream.App.UI.UiHost(",
|
||||
"_uiHost.WireMouse(m)",
|
||||
"_uiHost.WireKeyboard(kb)",
|
||||
|
|
@ -192,7 +192,7 @@ public sealed class GameWindowSlice8BoundaryTests
|
|||
"private AcDream.App.Net.LiveSessionHost");
|
||||
string body = MethodBody(
|
||||
"private void OnFramebufferResize(",
|
||||
"private void ApplyDisplayWindowState(");
|
||||
"private uint? PickWorldGuidAtCursor(");
|
||||
|
||||
Assert.Contains("=> _framebufferResize.Resize(newSize);", body, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("Viewport(", body, StringComparison.Ordinal);
|
||||
|
|
@ -209,6 +209,68 @@ public sealed class GameWindowSlice8BoundaryTests
|
|||
StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RuntimeSettings_IsOneTwoPhaseOwnerWithoutWindowStateMirrors()
|
||||
{
|
||||
string source = GameWindowSource();
|
||||
string run = MethodBody("public void Run()", "private void OnLoad()");
|
||||
string load = MethodBody(
|
||||
"private void OnLoad()",
|
||||
"private AcDream.App.Net.LiveSessionHost");
|
||||
string shutdown = MethodBody(
|
||||
"private ResourceShutdownTransaction CreateShutdownTransaction()",
|
||||
"private void OnFocusChanged(bool focused)");
|
||||
|
||||
Assert.Contains(
|
||||
"private readonly RuntimeSettingsController _runtimeSettings;",
|
||||
source,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains(
|
||||
"_runtimeSettings = new RuntimeSettingsController(",
|
||||
source,
|
||||
StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("new SettingsStore(", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("new AcDream.UI.Abstractions.Panels.Settings.SettingsStore(", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(".LoadDisplay()", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(".LoadAudio()", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(".LoadGameplay()", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(".LoadChat()", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(".LoadCharacter(", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("_persistedDisplay", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("_persistedAudio", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("_persistedGameplay", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("_persistedChat", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("_persistedCharacter", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("_activeToonKey", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("_settingsStore", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("_settingsVm", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("LoadAndApplyPersistedSettings", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("private void ApplyDisplayWindowState", source, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("public void ReapplyQualityPreset", source, StringComparison.Ordinal);
|
||||
|
||||
AssertAppearsInOrder(
|
||||
run,
|
||||
"RuntimeSettingsSnapshot startup = _runtimeSettings.Startup",
|
||||
"_displayFramePacing.InitializeStartup(startup.Display.VSync)",
|
||||
"Samples = startup.Quality.MsaaSamples",
|
||||
"Window.Create(options)");
|
||||
AssertAppearsInOrder(
|
||||
load,
|
||||
"_runtimeSettings.ApplyStartup(",
|
||||
"if (DevToolsEnabled)",
|
||||
"TerrainAtlas.Build(",
|
||||
"_runtimeSettings.BindRuntimeTargets(",
|
||||
"_liveSessionHost.Start(_options)");
|
||||
AssertAppearsInOrder(
|
||||
shutdown,
|
||||
"_runtimeSettings.UnbindViewModel()",
|
||||
"_runtimeSettings.UnbindRuntimeTargets",
|
||||
"_retailUiRuntime?.Dispose()",
|
||||
"_streamer?.Dispose()",
|
||||
"_wbDrawDispatcher?.Dispose()",
|
||||
"_terrain?.Dispose()");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UpdateRenderFocusAndCloseRemainNarrowHostEdges()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue