WBP_AccessibilityUI — Widget (Subtitle Display, Accessibility Overlays)
Parent Class: UUserWidget (created via Widget Blueprint)
Dependencies: BPC_DialoguePlaybackSystem, BPC_NarrativeStateSystem, SS_SettingsSystem
File: WBP_AccessibilityUI
Purpose
Provides subtitle rendering, speaking-name display, subtitle background styling, and accessibility-focused UI overlays (high-contrast mode, colorblind filters, font scaling). Listens to dialogue events from BPC_DialoguePlaybackSystem and settings changes from SS_SettingsSystem.
Responsibilities
- Display subtitles at the bottom-center of the screen with speaker name, dialogue text, and optional background
- Support multi-line subtitle display with timed progression
- Display speaker name above the subtitle text (optional per settings)
- React to accessibility settings: font size scaling, background opacity, colorblind mode, high-contrast mode
- Fade subtitles in/out on line start/end
- Queue subtitle lines if multiple fire rapidly
- Handle subtitle grouping: one line at a time per speaker, multi-speaker stacking
Variables
| Name |
Type |
Description |
SubtitleContainer |
VerticalBox |
Vertical stack for active subtitle lines |
SpeakerNameText |
TextBlock |
Current speaker's display name |
SubtitleText |
TextBlock |
Current subtitle line text |
SubtitleBackground |
Image or Border |
Background behind subtitle text |
AnimSubtitleIn |
WidgetAnimation |
Fade in subtitle |
AnimSubtitleOut |
WidgetAnimation |
Fade out subtitle |
ActiveSubtitles |
Array of FSubtitleLine |
Currently displayed subtitle lines |
SubtitleQueue |
Array of FSubtitleLine |
Queue if multiple lines arrive simultaneously |
bSubtitlesEnabled |
Bool |
From settings |
SubtitleFontScale |
Float |
0.8, 1.0, 1.2, 1.5 from settings |
SubtitleBackgroundOpacity |
Float |
0.0 to 1.0 from settings |
bHighContrastMode |
Bool |
From settings |
bIsCurrentlySpeaking |
Bool |
Prevents flicker between rapid lines |
Structs
Functions / Events
| Name |
Inputs |
Outputs |
Description |
Construct |
— |
— |
Bind to dialogue dispatchers, load accessibility settings |
OnDialogueLineStarted |
Data: FSubtitleLine |
— |
Add subtitle to display, start fade-in timer |
OnDialogueLineComplete |
Data: FSubtitleLine |
— |
Start fade-out, remove from active list after animation |
OnDialogueSequenceEnded |
— |
— |
Clear all subtitles, fade out |
DisplaySubtitle |
Line: FSubtitleLine |
— |
Set speaker name, text, background; play AnimSubtitleIn |
HideSubtitle |
Line: FSubtitleLine |
— |
Play AnimSubtitleOut, remove from container |
SetSubtitlesEnabled |
bEnabled: Bool |
— |
Show/hide subtitle container |
ApplyFontScale |
Scale: Float |
— |
Set subtitle text font size (scalar) |
SetBackgroundOpacity |
Opacity: Float |
— |
Set subtitle background render opacity |
ApplyHighContrastMode |
bEnabled: Bool |
— |
Toggle high-contrast subtitle background/text colors |
OnAccessibilitySettingsChanged |
Settings: S_AccessibilitySettings |
— |
Apply all accessibility settings at once |
ClearAllSubtitles |
— |
— |
Remove all active subtitles immediately |
Blueprint Flow — Subtitle Lifecycle
Accessibility Settings Consumption
Event Dispatchers
| Name |
Parameters |
Fired When |
OnSubtitleStarted |
Line: FSubtitleLine |
A new subtitle line appears |
OnSubtitleEnded |
Line: FSubtitleLine |
A subtitle line ends |
OnAllSubtitlesCleared |
— |
All subtitles removed |
Communications With
| Target System |
Method |
Why |
BPC_DialoguePlaybackSystem |
Dispatchers (OnLineStarted, OnLineComplete, OnSequenceEnded) |
Receive subtitle data |
[SS_SettingsSystem] |
Direct reads, dispatcher on settings changed |
Apply accessibility preferences |
WBP_HUD |
Parent reference |
Positioning within HUD canvas |
[BPC_NarrativeStateSystem] |
Query |
Speaker display name overrides |
Reuse Notes
The subtitle display widget is purely reactive — it never fetches or filters dialogue data. It can be embedded in any HUD canvas (first-person, third-person, diegetic screen overlay). The FSubtitleLine struct is intentionally compatible with the DA_DialogueSequence line format. If no speaker name is provided, the SpeakerNameText collapses and the subtitle text fills the full width. High-contrast mode inverts colors for readability against any background.