103 lines
3.5 KiB
Markdown
103 lines
3.5 KiB
Markdown
# 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 |