# 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