# WBP_ObjectiveDisplay — Widget (Objective Display) **Parent:** `UUserWidget` **Used by:** `WBP_HUDController`, `BPC_ObjectiveSystem` **Depends On:** `BPC_ObjectiveSystem` --- ### Purpose Displays current objectives as an overlay on the HUD. Shows active objective text, objective markers, and progress indicators. Updates in real-time as objectives are added, completed, or updated. ### Variables | Name | Type | Description | |------|------|-------------| | `ObjectiveText` | `TextBlock` | Current objective description | | `ObjectiveMarker` | `Image` | Directional indicator if objective is off-screen | | `ProgressBar` | `ProgressBar` | Objective progress (0-1) if applicable | | `AnimFadeIn` | `WidgetAnimation` | Fade in on objective change | | `AnimFadeOut` | `WidgetAnimation` | Fade out when objective completes | | `AnimObjectiveComplete` | `WidgetAnimation` | Completion flourish | | `ObjectiveQueue` | Array of `S_ObjectiveData` | Queued objectives for sequential display | ### Structs ```cpp S_ObjectiveData { FText ObjectiveText; FGameplayTag ObjectiveTag; float Progress; bool bIsComplete; FVector WorldLocation; // For off-screen marker } ``` ### Functions | Name | Inputs | Outputs | Description | |------|--------|---------|-------------| | `OnConstruct` | — | — | Bind to BPC_ObjectiveSystem dispatchers | | `OnObjectiveActivated` | Objective: `S_ObjectiveData` | — | Show objective with fade-in animation | | `OnObjectiveUpdated` | Objective: `S_ObjectiveData` | — | Update progress bar and text | | `OnObjectiveCompleted` | ObjectiveTag: GameplayTag | — | Play completion animation, then fade out | | `UpdateOffScreenMarker` | WorldLocation: FVector | — | Calculate screen position, rotate marker | | `ClearAllObjectives` | — | — | Clear all active objective displays | ### Event Dispatchers | Name | Parameters | Fired When | |------|-----------|------------| | `OnObjectiveDisplayed` | ObjectiveText: FText | New objective shown | | `OnObjectiveCleared` | — | All objectives cleared | ### Communications With | Target System | Method | Why | |--------------|--------|-----| | [`BPC_ObjectiveSystem`](../07-narrative/39_BPC_ObjectiveSystem.md) | Dispatcher | Receive objective changes | | [`WBP_HUDController`](WBP_HUDController.md) | Parent reference | Coordinate visibility with other HUD elements | ### Blueprint Flow ``` [OnObjectiveActivated] └─► Set ObjectiveText = Objective.ObjectiveText └─► Set ProgressBar visibility based on objective type └─► If objective has world location → Show ObjectiveMarker └─► Play AnimFadeIn └─► Broadcast OnObjectiveDisplayed [OnObjectiveCompleted] └─► Play AnimObjectiveComplete └─► Delay 2.0 seconds └─► Play AnimFadeOut └─► Show next queued objective if any [UpdateOffScreenMarker] └─► Project world location to screen └─► If behind camera → place at screen edge, rotate indicator └─► Update ObjectiveMarker position + rotation ``` ### Reuse Notes - Created as part of Clean Slate refactoring (Master Section 6.6) - Follows TEMPLATE.md format for all new blueprint specs