# WBP_SettingsMenu — Widget (Settings Menu) **Parent:** `UUserWidget` **Used by:** `SS_UIManager.PushMenu("SettingsMenu")` **Depends On:** `SS_UIManager`, `SS_SettingsSystem` --- ### Purpose Full settings screen with sections: Audio, Video/Graphics, Gameplay, Controls, Accessibility. ### Enums (local or global) ```cpp E_SettingsTab { Audio, Video, Gameplay, Controls, Accessibility } ``` ### Variables | Name | Type | Description | |------|------|-------------| | `ActiveTab` | `E_SettingsTab` | Currently visible tab | | `TabButtons` | Array of `Button` | Tab navigation buttons | | `TabPanels` | Array of `PanelWidget` | Tab content panels | **Audio Tab Children:** | Name | Type | Description | |------|------|-------------| | `MasterVolumeSlider` | `Slider` | 0-100 | | `SFXVolumeSlider` | `Slider` | 0-100 | | `MusicVolumeSlider` | `Slider` | 0-100 | | `VoiceVolumeSlider` | `Slider` | 0-100 | | `SubtitlesToggle` | `CheckBox` | On/Off | **Video Tab Children:** | Name | Type | Description | |------|------|-------------| | `ResolutionDropdown` | `ComboBoxString` | Available resolutions | | `WindowModeDropdown` | `ComboBoxString` | Fullscreen, Windowed, Borderless | | `VSyncToggle` | `CheckBox` | On/Off | | `QualityPresetDropdown` | `ComboBoxString` | Low, Medium, High, Epic | | `BrightnessSlider` | `Slider` | 0.5-2.0 gamma | **Gameplay Tab Children:** | Name | Type | Description | |------|------|-------------| | `InvertYAxisToggle` | `CheckBox` | On/Off | | `SensitivitySlider` | `Slider` | Mouse sensitivity 0.1-5.0 | | `HoldDurationToggle` | `CheckBox` | Tap vs Hold for interactions | | `AutoPickupToggle` | `CheckBox` | On/Off | | `CrosshairToggle` | `CheckBox` | Show crosshair | **Controls Tab Children:** | Name | Type | Description | |------|------|-------------| | `ActionMappingsList` | `ListView` | Key binding rows | | `ResetDefaultsButton` | `Button` | Reset all bindings | **Accessibility Tab Children:** | Name | Type | Description | |------|------|-------------| | `SubtitleSizeDropdown` | `ComboBoxString` | Small, Medium, Large | | `SubtitleBackgroundOpacity` | `Slider` | 0-100% | | `ColorblindModeDropdown` | `ComboBoxString` | None, Protanopia, Deuteranopia, Tritanopia | | `HighContrastUIToggle` | `CheckBox` | On/Off | | `CameraShakeIntensity` | `Slider` | 0-100% | | `MotionBlurToggle` | `CheckBox` | On/Off | ### Functions | Name | Inputs | Outputs | Description | |------|--------|---------|-------------| | `OnConstruct` | — | — | Populate dropdowns from system, load saved settings | | `SwitchTab` | Tab: `E_SettingsTab` | — | Show selected panel, hide others | | `OnSettingChanged` | SettingName: FName, Value: Generic | — | Write to SS_SettingsSystem | | `SaveSettings` | — | — | SS_SettingsSystem.SaveToDisk | | `ApplyVideoSettings` | — | — | Apply resolution, window mode, quality | | `ResetToDefaults` | — | — | Load default values, re-populate UI | | `OnBack` | — | — | SaveSettings, SS_UIManager.PopMenu | | `RebindKey` | ActionName: FName | — | Listen for next key press, map to action | ### Communications With | Target System | Method | Why | |--------------|--------|-----| | [`SS_UIManager`](44_SS_UIManager.md) | Push/Pop | Menu lifecycle | | `SS_SettingsSystem` | Function calls | Read/write settings | ### Reuse Notes - The tab panel pattern can be extended for mod settings or developer menus by adding new tab entries - Split from original bundled `36_WBP_MenuWidgets.md` per Clean Slate refactoring plan