# WBP_HUDController — Asset Implementation

> **UE5 Asset:** `/Game/Framework/UI/WBP_HUDController`
> **Parent Class:** `UserWidget`
> **Purpose:** Root HUD widget — manages all HUD sub-widgets

---

## Create This Widget

1. Content Browser → `Content/Framework/UI/`
2. Right-click → **User Interface → Widget Blueprint**
3. Name: `WBP_HUDController`

---

## Designer Canvas Setup

```
Canvas Panel (root)
  ├─ WBP_InteractionPromptDisplay   (bottom-center)
  ├─ WBP_ObjectiveDisplay            (top-right)
  ├─ WBP_NotificationToast           (top-center)
  ├─ HealthBar (ProgressBar)         (bottom-left)  [inline or sub-widget]
  ├─ StaminaBar (ProgressBar)        (bottom-left, below health)
  ├─ AmmoDisplay (TextBlock)         (bottom-right)
  ├─ Crosshair (Image)               (center)
  └─ WBP_DiegeticHUDFrame            (full screen, behind everything)
```

---

## What to Wire

### Event: Event Construct
```
[Event Construct]
  ├─ Get Owning Player Pawn → Store as CachedPawn
  ├─ Get Pawn → GetComponentByClass(BPC_HealthSystem) → Bind OnHealthChanged
  ├─ GetComponentByClass(BPC_StaminaSystem) → Bind OnStaminaChanged
  ├─ Get GameState → Cast to GS_CoreGameState → Bind OnObjectiveTagsChanged
  └─ Get GameInstance → Cast to GI_GameFramework → Bind OnGamePhaseChanged
```

### Health Binding (Custom Event)
```
[OnHealthChanged(Current, Max, Delta)]
  ├─ HealthBar → Set Percent(Current / Max)
  ├─ Branch: Delta < 0?
  │   True → Play Animation (DamageVignette)
  └─ Branch: Current <= 0?
      └─ Call WBP_ScreenEffectController → PlayDeathEffect
```

### GamePhase Binding
```
[OnGamePhaseChanged(NewPhase)]
  ├─ Switch on NewPhase:
  │   MainMenu → Hide HUD
  │   InGame → Show HUD
  │   Paused → Dim HUD, show pause overlay
  │   Cutscene → Hide HUD
  │   DeathLoop → Show death screen
```

---

## Test It
- [ ] PIE with player pawn: HUD displays
- [ ] Take damage: health bar updates
- [ ] Sprint: stamina bar drains
- [ ] Open menu: HUD hides/disables
