# 72 — BPC_AccessibilitySettings ## Blueprint Spec — UE 5.5–5.7 --- ### Parent Class `ActorComponent` ### Dependencies - [`SS_SettingsManager`](71_SS_SettingsManager.md) — Reads accessibility settings - [`WBP_AccessibilityUI`](../06-ui/46_WBP_AccessibilityUI.md) — UI integration - [`BPC_TutorialSystem`](73_BPC_TutorialSystem.md) — Tutorial accessibility - [`BPC_AudioManager`](../10-adaptive/66_BPC_AudioManager.md) — Audio accessibility ### Purpose Applies accessibility-focused modifications to the game based on user settings including colorblind modes, subtitle configuration, screen shake reduction, high-contrast UI, text-to-speech, reduced motion, and audio cue visualizations. Operates as a local player component that reads from SS_SettingsManager and applies changes at runtime. ### Enums **EColorBlindMode** | Value | Description | |-------|-------------| | None | Default colors | | Protanopia | Red-blind filter | | Deuteranopia | Green-blind filter | | Tritanopia | Blue-blind filter | **ESubtitleSize** | Value | Description | |-------|-------------| | Small | Default size | | Medium | 150% size | | Large | 200% size | | ExtraLarge | 300% size | **EScreenShakeLevel** | Value | Description | |-------|-------------| | Full | All screen shakes enabled | | Reduced | 50% intensity cap | | Minimal | 25% intensity cap | | Off | No screen shake | ### Variables | Name | Type | Description | |------|------|-------------| | `ColorBlindMode` | EColorBlindMode | Current colorblind filter | | `SubtitleSize` | ESubtitleSize | Subtitle text scale | | `bHighContrastUI` | Bool | High contrast mode | | `bTextToSpeech` | Bool | TTS for UI text | | `bReducedMotions` | Bool | Disable UI animations | | `bLargeText` | Bool | Enlarge all UI text | | `ScreenShakeLevel` | EScreenShakeLevel | Camera shake intensity | | `bVisualizeAudioCues` | Bool | Show audio direction indicators | | `bAutoReadDialogue` | Bool | Auto-play dialogue subtitles | | `bPauseOnDialogue` | Bool | Auto-pause during dialogue | | `bDisableFlashEffects` | Bool | Prevent strobe/photosensitive effects | ### Functions | Name | Inputs | Outputs | Description | |------|--------|---------|-------------| | `Initialize` | — | — | Read settings, apply initial state | | `SetColorBlindMode` | Mode: EColorBlindMode | — | Apply colorblind filter | | `SetSubtitleSize` | Size: ESubtitleSize | — | Update subtitle scale | | `SetHighContrastUI` | bEnabled: Bool | — | Toggle high contrast | | `SetTextToSpeech` | bEnabled: Bool | — | Toggle TTS | | `SetReducedMotions` | bEnabled: Bool | — | Toggle reduced motion | | `SetLargeText` | bEnabled: Bool | — | Toggle large text | | `SetScreenShakeLevel` | Level: EScreenShakeLevel | — | Update shake intensity | | `SetVisualizeAudioCues` | bEnabled: Bool | — | Toggle audio visualization | | `SetDisableFlashEffects` | bEnabled: Bool | — | Disable flashing effects | | `ApplyColorBlindCorrection` | — | — | Post-process color matrix | | `ApplyHighContrastMaterials` | — | — | Override UI material | | `DisableFlashInVFX` | — | — | Remove strobe from VFXManager | | `HandleDialogueAutoRead` | DialogueText: FText | — | TTS for dialogue | | `ProvideAudioDirectionIndicator` | SoundLocation: FVector | — | Show direction arrow | | `ReadUITextAloud` | Text: FText | — | TTS for UI elements | ### Blueprint Flow ``` [Initialize] └─► Read from SS_SettingsManager: ColorBlindMode = GetSetting("ColorBlindMode") SubtitleSize = GetSetting("SubtitleSize") bHighContrastUI = GetSettingBool("HighContrastUI") etc. └─► ApplyColorBlindCorrection() └─► ApplyHighContrastMaterials() └─► Register callbacks for OnSettingChanged dispatcher [ApplyColorBlindCorrection] └─► Use UPostProcessComponent on player camera └─► Set Color Grading LUT based on mode: Protanopia: Shift red channel matrix Deuteranopia: Shift green channel matrix Tritanopia: Shift blue channel matrix └─► Apply via PostProcessSettings.ColorGradingSettings [ApplyHighContrastMaterials] └─► Override all WBP widget materials with high-contrast versions └─► Increase outline thickness on all interactive elements └─► Increase font weight and contrast ratio [DisableFlashInVFX] └─► Call BPC_VFXManager.SetFearVFXEnabled(false) during flash sequences └─► Remove strobe flicker from BPC_LightingManager fear-reactive lights └─► Replace flash transitions with fade transitions ``` ### Communications With | Target | Method | Why | |--------|--------|-----| | [`SS_SettingsManager`](71_SS_SettingsManager.md) | Event | Settings changes | | [`BPC_VFXManager`](../10-adaptive/67_BPC_VFXManager.md) | Get owner | Disable flash effects | | [`BPC_LightingManager`](../10-adaptive/65_BPC_LightingManager.md) | Get owner | Disable flicker | | [`BPC_AudioManager`](../10-adaptive/66_BPC_AudioManager.md) | Get owner | Audio cues | | [`BPC_TutorialSystem`](73_BPC_TutorialSystem.md) | Direct call | Accessible tutorials | ### Reuse Notes - Color blindness correction uses post-process color grading matrix - Subtitle scaling modifies URichTextBlock font size globally - High contrast mode uses alternate widget styles - Screen shake reduction caps camera shake intensity in player controller - Visual audio cues use world-space widget arrows pointing to sound origin - Flash effect disable also affects DynamicEvent light flicker