# 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