# WBP_PauseMenu / WBP_SettingsMenu / WBP_InventoryMenu
# WBP_JournalDocumentViewer / WBP_ObjectiveDisplay
# WBP_NotificationToast / WBP_ScreenEffectController
# WBP_AccessibilityUI / WBP_DiegeticHUDFrame
# WBP_MenuFlowController / WBP_CreditsScreen
#
# UI Widget Assets — Quick Creation Sheet (11 widgets)

> **UE5 Path:** `Content/Framework/UI/`
> **Parent Class:** `UserWidget`

---

## WBP_PauseMenu

**Canvas:** Vertical Box (centered) → Resume, Settings, Save, Load, Quit to Menu, Quit to Desktop

**Key Logic:**
```
Event Construct:
  └─ Set Input Mode: UI + ShowCursor

btn_Resume.OnClicked:
  └─ Call SS_UIManager.PopWidget() → Set Input Mode: Game
```

---

## WBP_SettingsMenu

**Canvas:** Tab buttons (Audio, Video, Controls, Gameplay, Accessibility) + settings panels

**Key Logic:**
```
Audio Tab → Volume sliders → SS_AudioManager.SetBusVolume(Category, Volume)
Video Tab → Resolution dropdown, Fullscreen toggle, Quality presets
Controls Tab → Key rebinding list → SS_EnhancedInputManager.RebindKey(Action, Key)
Gameplay Tab → Difficulty, subtitle toggle, aim assist
Accessibility Tab → WBP_AccessibilityUI embedded

On Apply → SaveSettings → SS_SettingsSystem.ApplyAndSave()
On Back → If dirty → "Save changes?" dialog
```

---

## WBP_InventoryMenu

**Canvas:** Grid panel (8 columns) + item detail panel on right + weight bar at bottom

**Key Logic:**
```
Event Construct:
  ├─ Get Pawn → BPC_InventorySystem → Bind OnInventoryChanged → RefreshGrid
  └─ Bind OnWeightChanged → UpdateWeightBar

RefreshGrid:
  ├─ Clear Grid children
  └─ For each slot → Create WBP_InventorySlot widget → Add to Grid

OnSlotClicked(SlotIndex):
  ├─ If dragging → SwapSlots
  ├─ If right-click → ShowContextMenu (Use, Equip, Drop, Examine)
  └─ Show item detail in right panel
```

---

## WBP_JournalDocumentViewer

**Canvas:** ScrollBox with document entries + detail view on right

**Key Logic:**
```
Construct → BPC_DocumentArchiveSystem → GetAllDocuments()
  └─ For each doc → create list item → on click → show full text + image
```

---

## WBP_ObjectiveDisplay

**Canvas:** Vertical Box (top-right) — list of active objectives

**Key Logic:**
```
Bind GS_CoreGameState.OnObjectiveTagsChanged → Refresh
  └─ For each ActiveObjectiveTag → lookup DA_ObjectiveData → show title + progress
```

---

## WBP_NotificationToast

**Canvas:** Border (top-center, slides in/out) → Icon + Title + Subtitle

**Key Logic:**
```
ShowToast(Title, Subtitle, Icon, Duration):
  ├─ Set text
  ├─ Play SlideIn animation
  └─ Delay(Duration) → Play SlideOut → Remove from parent
```

---

## WBP_ScreenEffectController

**Canvas:** Full-screen overlay images (vignette, blood, healing, flash)

**Key Logic:**
```
PlayEffect(EffectType, Intensity, Duration):
  ├─ Switch EffectType
  │   Damage → Show red vignette, fade to Intensity
  │   Healing → Show green edge glow
  │   Death → Show black fade
  │   Flash → Show white screen
  └─ Timeline: fade in, hold, fade out

Bind BPC_HealthSystem.OnHealthChanged → if damage → PlayEffect(Damage)
```

---

## WBP_AccessibilityUI

**Canvas:** Toggles and sliders for accessibility options

**Controls:**
- Subtitles: On/Off + size slider
- Colorblind Mode: Off/Protanopia/Deuteranopia/Tritanopia
- Controller Remap: Per-platform button mapping
- Difficulty: Story/Easy/Normal/Hard/Nightmare
- Aim Assist: Off/Low/Medium/High

**On change → call SS_SettingsSystem.SaveAccessibilitySettings()**

---

## WBP_DiegeticHUDFrame

**Canvas:** Empty container that renders to a material on the player's wristwatch/helmet

**Key Logic:**
- This widget renders to a RenderTarget
- The render target is assigned to the wristwatch mesh material
- Contents show mini-HUD: health dots, ammo count, compass

---

## WBP_MenuFlowController

**Not visual** — state machine that manages menu transitions.

**States:** MainMenu → NewGame → Loading → InGame → Pause → Settings → Death → Credits

**Key Logic:**
```
PushMenu(MenuWidget):
  ├─ If current menu → hide
  ├─ Create new menu → add to viewport
  └─ Store in MenuStack

PopMenu():
  ├─ Remove top menu from viewport
  └─ Restore previous menu

OnBackPressed:
  ├─ If menu stack has entries → PopMenu
  └─ If game and no stack → Show PauseMenu
```

---

## WBP_CreditsScreen

**Canvas:** ScrollBox — auto-scrolling credits text

**Key Logic:**
```
Event Construct:
  └─ Start Timeline → scroll credits text from bottom to top over 60 seconds

OnSkip (any key press):
  └─ Jump to end → show "Thanks for Playing" → auto-transition to MainMenu
```

---

## Test All Widgets
- [ ] Each widget displays in isolation (right-click → Run Widget)
- [ ] Pause menu toggles cursor correctly
- [ ] Settings save and persist across sessions
- [ ] Inventory grid updates when items change
- [ ] Notification toast animates in/out
- [ ] Screen effects don't block input
