diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index 075589794..b3cf61c1b 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -512,7 +512,7 @@ Console.WriteLine("Renderer-local console authority: deleted; UI commands flow t Console.WriteLine("Renderer-local debug panels: obsolete uGUI field tester authority is deleted"); Console.WriteLine("Main-menu settings authority: player name, gameplay, and graphics settings return through typed player-settings commits"); Console.WriteLine("Main-menu root shell: root navigation lowers through an Eve UI Toolkit surface instead of the legacy PropertiesPanel/fade shell"); -Console.WriteLine("Main-menu settings shell: settings/input/audio subpages lower through Eve UI Toolkit surfaces instead of PropertiesPanel buttons"); +Console.WriteLine("Main-menu settings shell: settings/input subpages lower through Eve UI Toolkit surfaces, and the fake audio page is deleted until a typed audio owner exists"); Console.WriteLine("Confirmation dialog shell: runtime prompts no longer inherit the generic PropertiesPanel machinery"); Console.WriteLine("Main-menu input shell: the Eve input page delegates to the live runtime remap screen when that owner exists"); Console.WriteLine("Runtime input-screen authority: hotkey and menu handoff share the same fullscreen-menu primitive"); @@ -2454,14 +2454,11 @@ static void RequireMainMenuSettingsShellUsesEveSurface(string root) "RenderMenuSurface(", "BuildSettingsSurfaceDefinition()", "BuildInputSettingsSurfaceDefinition(", - "BuildAudioSettingsSurfaceDefinition()", "HandleSettingsSurfaceCommand(", "HandleInputSettingsSurfaceCommand(", - "HandleAudioSettingsSurfaceCommand(", "WithBackAction(", "ShowPlayerSettingsCommand", "ShowInputSettingsCommand", - "ShowAudioSettingsCommand", "BackToMainCommand", "BackToSettingsCommand" }; @@ -2482,6 +2479,9 @@ static void RequireMainMenuSettingsShellUsesEveSurface(string root) "_nextMenu.panel.AddButton(\"Player Settings\"", "_nextMenu.panel.AddButton(\"Input\"", "_nextMenu.panel.AddButton(\"Audio\"", + "BuildAudioSettingsSurfaceDefinition(", + "HandleAudioSettingsSurfaceCommand(", + "ShowAudioSettingsCommand", "_nextMenu.panel.Title.text = \"settings\"", "_nextMenu.panel.Title.text = TitleSubtitle(\"input\", \"settings\")", "_nextMenu.panel.Title.text = TitleSubtitle(\"audio\", \"settings\")" @@ -2494,7 +2494,7 @@ static void RequireMainMenuSettingsShellUsesEveSurface(string root) if (hits.Length > 0) { throw new InvalidOperationException( - "MainMenu still owns settings/input/audio subpages through the old PropertiesPanel shell: " + + "MainMenu still keeps a fake audio/settings shell or old PropertiesPanel settings shell alive: " + string.Join(", ", hits)); } } diff --git a/Assets/Scripts/UI/MainMenu.cs b/Assets/Scripts/UI/MainMenu.cs index 597f2041b..7944c1eb1 100644 --- a/Assets/Scripts/UI/MainMenu.cs +++ b/Assets/Scripts/UI/MainMenu.cs @@ -27,7 +27,6 @@ public class MainMenu : MonoBehaviour private const string MainSurfaceId = "aetheria.main_menu.root"; private const string SettingsSurfaceId = "aetheria.main_menu.settings"; private const string InputSettingsSurfaceId = "aetheria.main_menu.input_settings"; - private const string AudioSettingsSurfaceId = "aetheria.main_menu.audio_settings"; private const string PlayerSettingsShellSurfaceId = "aetheria.main_menu.player_settings"; private const string ContinueRunCommand = "aetheria.main_menu.root.continue"; private const string NewGameCommand = "aetheria.main_menu.root.new_game"; @@ -36,7 +35,6 @@ public class MainMenu : MonoBehaviour private const string OpenRuntimeInputScreenCommand = "aetheria.main_menu.input_settings.open_runtime_screen"; private const string ShowPlayerSettingsCommand = "aetheria.main_menu.settings.show_player_settings"; private const string ShowInputSettingsCommand = "aetheria.main_menu.settings.show_input_settings"; - private const string ShowAudioSettingsCommand = "aetheria.main_menu.settings.show_audio_settings"; private const string BackToMainCommand = "aetheria.main_menu.settings.back_to_main"; private const string BackToSettingsCommand = "aetheria.main_menu.settings.back_to_settings"; @@ -235,11 +233,6 @@ public class MainMenu : MonoBehaviour RenderMenuSurface(BuildInputSettingsSurfaceDefinition(CanOpenRuntimeInputScreen(), InGame), HandleInputSettingsSurfaceCommand); } - private void ShowAudioSettings() - { - RenderMenuSurface(BuildAudioSettingsSurfaceDefinition(), HandleAudioSettingsSurfaceCommand); - } - private void ShowPlayerSettingsSurface() { RenderMenuSurface( @@ -294,9 +287,6 @@ public class MainMenu : MonoBehaviour case ShowInputSettingsCommand: ShowInputSettings(); return; - case ShowAudioSettingsCommand: - ShowAudioSettings(); - return; case BackToMainCommand: ShowMain(); return; @@ -327,17 +317,6 @@ public class MainMenu : MonoBehaviour Debug.LogWarning($"Unknown input settings command: {request.Command}"); } - private void HandleAudioSettingsSurfaceCommand(EveSurfaceCommandRequest request) - { - if (string.Equals(request.Command, BackToSettingsCommand, StringComparison.Ordinal)) - { - ShowSettings(); - return; - } - - Debug.LogWarning($"Unknown audio settings command: {request.Command}"); - } - private void HandlePlayerSettingsSurfaceCommand(EveSurfaceCommandRequest request) { if (string.Equals(request.Command, BackToSettingsCommand, StringComparison.Ordinal)) @@ -452,7 +431,6 @@ public class MainMenu : MonoBehaviour { new EveCommandTemplate(ShowPlayerSettingsCommand, "Player Settings", "unity-uitoolkit"), new EveCommandTemplate(ShowInputSettingsCommand, "Input", "unity-uitoolkit"), - new EveCommandTemplate(ShowAudioSettingsCommand, "Audio", "unity-uitoolkit"), new EveCommandTemplate(BackToMainCommand, "Back", "unity-uitoolkit") }, Card( @@ -460,12 +438,11 @@ public class MainMenu : MonoBehaviour "Settings", Text( "aetheria.mainMenu.settings.note", - "Typed Verse settings already lower through Eve. Input rebinding and audio still have narrower local authority."), + "Typed Verse settings already lower through Eve. Input rebinding still hands off to the runtime-owned remap screen, and audio still has no typed surface."), ButtonRow( "aetheria.mainMenu.settings.actions", Button("aetheria.mainMenu.settings.playerSettings", "Player Settings", ShowPlayerSettingsCommand), Button("aetheria.mainMenu.settings.input", "Input", ShowInputSettingsCommand), - Button("aetheria.mainMenu.settings.audio", "Audio", ShowAudioSettingsCommand), Button("aetheria.mainMenu.settings.back", "Back", BackToMainCommand)))); } @@ -546,26 +523,6 @@ public class MainMenu : MonoBehaviour cardChildren.ToArray())); } - private static EveSurfaceDocument BuildAudioSettingsSurfaceDefinition() - { - return BuildMenuSurfaceDocument( - AudioSettingsSurfaceId, - "Aetheria Audio Settings", - new[] - { - new EveCommandTemplate(BackToSettingsCommand, "Back", "unity-uitoolkit") - }, - Card( - "aetheria.mainMenu.audio.card", - "Audio Settings", - Text( - "aetheria.mainMenu.audio.note", - "No typed audio controls are published yet. This screen is lowered through Eve so the old menu shell stops owning the page while the real audio surface catches up."), - ButtonRow( - "aetheria.mainMenu.audio.actions", - Button("aetheria.mainMenu.audio.back", "Back", BackToSettingsCommand)))); - } - private static EveSurfaceDocument WithBackAction( EveSurfaceDocument document, string surfaceId, diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index 2447be8ae..49365b216 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -112,11 +112,12 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. equipped non-launcher weapons through typed behavior kind rows instead of inspecting runtime behavior config classes. Unity boot reads typed player settings back through the package-owned CultCache reader before falling back - to defaults. The main-menu settings navigation, input, and audio subpages now - also lower through local Eve/UI Toolkit surfaces instead of repopulating the - old `PropertiesPanel` button shell, even though typed rebinding controls and - typed audio controls are still future work. Sector-map zone inspection now - lowers through a local Eve/UI Toolkit surface as well instead of rebuilding + to defaults. The main-menu settings navigation and input subpages now lower + through local Eve/UI Toolkit surfaces instead of repopulating the old + `PropertiesPanel` button shell, and the input page delegates to the live + runtime remap screen when that owner exists. The fake audio page has been + deleted until audio has a typed owner. Sector-map zone inspection now lowers + through a local Eve/UI Toolkit surface as well instead of rebuilding `PropertiesPanel` rows on each zone click. The runtime in-game menu tab strip now lowers through a local Eve/UI Toolkit surface, with `MenuPanel` serializing tab metadata directly instead of routing authority through old @@ -1563,13 +1564,14 @@ First Aetheria surfaces to publish: a special-case text field; UI Toolkit lowers the shared Eve text control and gameplay still owns the typed player-settings commit. - Done: replace the whole main-menu shell with Eve-owned UI Toolkit - surfaces. Root navigation, settings, input, and audio now lower through a + surfaces. Root navigation and settings/input pages now lower through a single Eve host instead of the old `PropertiesPanel`/fade shell. The menu remains a client-side projection: the Aetheria daemon owns Verse state and Unity renders and submits commands. The input page now reports typed state and delegates to the live runtime remap screen in the in-game overlay instead of pretending that owner is still future work; typed Eve rebinding - controls are still future work. Audio still lacks a typed state surface. + controls are still future work. The fake audio page is deleted until audio + has a typed state owner. - Done: replace the sector-map zone details panel with an Eve-owned UI Toolkit surface. `SectorRenderer` still owns reveal/camera behavior, but zone inspection no longer rebuilds `PropertiesPanel` rows when the player