add blueprints

This commit is contained in:
Lefteris Notas
2026-05-19 13:22:27 +03:00
parent f71bc678b2
commit 411edea8ce
138 changed files with 23330 additions and 0 deletions

View File

@@ -0,0 +1,169 @@
# 76 — BPC_LoadingScreen
## Blueprint Spec — UE 5.55.7
---
### Parent Class
`ActorComponent`
### Dependencies
- [`SS_SaveManager`](../05-saveload/28_SS_SaveManager.md) — Load state during transitions
- [`BPC_PerformanceScaler`](../10-adaptive/68_BPC_PerformanceScaler.md) — Quality level for loading assets
- [`WBP_LoadingScreen`](../06-ui/46_WBP_LoadingScreen.md) — UI widget (Phase 5)
- [`FL_LevelStreaming`](../01-core/07_FL_LevelStreaming.md) — Level loading utilities (Phase 0)
- [`DA_LoadingTips`](../12-content/79_DA_LoadingTips.md) — Tip data assets (Phase 12)
### Purpose
Manages loading screen display and behavior during level transitions, save/load operations, and streaming scenarios. Controls visibility, progress feedback, tip rotation, background presentation, and minimum display duration. Supports seamless transitions with fade effects and asynchronous loading state tracking.
### Enums
**ELoadingScreenType**
| Value | Description |
|-------|-------------|
| LevelTransition | Full level load |
| SaveLoad | Save/load operation |
| Streaming | Sub-level streaming |
| Boot | Initial game load |
| Quick | Fast travel |
**ELoadingScreenState**
| Value | Description |
|-------|-------------|
| Inactive | No loading active |
| FadingIn | Fade to black |
| Visible | Loading displayed |
| FadingOut | Fade from black |
| Complete | Load done, cleanup |
### Structs
**FLoadingScreenConfig**
| Field | Type | Description |
|-------|------|-------------|
| Type | ELoadingScreenType | What triggered this |
| bShowTips | Bool | Rotate loading tips |
| bShowProgress | Bool | Show progress bar |
| bUseBackgroundImage | Bool | Static or image |
| MinDisplayTime | Float | Minimum seconds shown |
| FadeInDuration | Float | Fade to black time |
| FadeOutDuration | Float | Fade from black time |
| BackgroundImages | TArray\<UTexture2D\> | Optional backgrounds |
| bAllowSkipping | Bool | Skip after load complete |
### Variables
| Name | Type | Description |
|------|------|-------------|
| `CurrentState` | ELoadingScreenState | Current loading state |
| `CurrentConfig` | FLoadingScreenConfig | Active configuration |
| `LoadingScreenWidget` | WBP_LoadingScreen | Widget reference |
| `LoadStartTime` | Float | When load began |
| `bIsTransitioning` | Bool | Fade in progress |
| `RemainingTips` | TArray\<FText\> | Unshown tips pool |
| `BackgroundIndex` | Int32 | Current background |
| `bLoadingComplete` | Bool | Load finished flag |
### Functions
| Name | Inputs | Outputs | Description |
|------|--------|---------|-------------|
| `ShowLoadingScreen` | Type: ELoadingScreenType, Config: FLoadingScreenConfig | — | Start loading display |
| `HideLoadingScreen` | — | — | End loading display |
| `UpdateLoadingProgress` | Progress: Float, StatusText: FText | — | Update progress bar |
| `SetLoadingMessage` | Message: FText | — | Change message text |
| `GetNextTip` | — | FText | Get random tip |
| `GetNextBackground` | — | UTexture2D | Cycle backgrounds |
| `SetBootConfiguration` | — | — | Configure for initial load |
| `SetLevelTransitionConfig` | LevelName: FName | — | Configure for level load |
| `HandleFadeInComplete` | — | — | Fade in finished |
| `HandleFadeOutComplete` | — | — | Fade out finished |
| `ForceCompleteLoading` | — | — | Skip remaining time |
| `ProcessPendingLoading` | — | — | Handle load queue |
| `LogLoadingComplete` | LoadTime: Float | — | Log load duration |
### Blueprint Flow
```
[ShowLoadingScreen]
└─► If bIsTransitioning: return (queue if needed)
└─► Set CurrentConfig = Config
└─► LoadStartTime = Current Time
└─► FadeIn:
Create WBP_LoadingScreen
Add to viewport (topmost Z-order)
Play fade in animation (FadeInDuration)
On anim complete:
CurrentState = Visible
bIsTransitioning = false
└─► If Type == Boot:
Show game logo, company logo (fade sequence)
└─► Start rotating tips timer (every 8 seconds):
GetNextTip() -> Update loading message
└─► If bUseBackgroundImage:
Set static or rotating backgrounds
[UpdateLoadingProgress]
└─► If Not Visible: return
└─► Clamp Progress 01
└─► WBP_LoadingScreen.UpdateProgress(Progress, StatusText)
[HideLoadingScreen]
└─► If Complete animation not playing && elapsed < MinDisplayTime:
Delay until MinDisplayTime reached
└─► CurrentState = FadingOut
└─► bIsTransitioning = true
└─► Play fade out animation (FadeOutDuration)
└─► On anim complete:
Remove WBP_LoadingScreen from viewport
CurrentState = Inactive
bIsTransitioning = false
LogLoadingComplete(ElapsedTime)
Broadcast OnLoadingComplete()
[GetNextTip]
└─► If RemainingTips is empty:
Refill from DA_LoadingTips
└─► Remove random tip from RemainingTips
└─► Return tip text
[Level Transition Flow]
└─► Level requested
└─► ShowLoadingScreen(LevelTransition)
└─► Asynchronous level loading:
Bind to load progress delegate
UpdateLoadingProgress(Progress, "Loading...")
└─► Level fully loaded:
Set bLoadingComplete = true
HideLoadingScreen()
```
### Event Dispatchers
| Name | Payload | Description |
|------|---------|-------------|
| `OnLoadingStarted` | Type: ELoadingScreenType | Load began |
| `OnLoadingComplete` | — | Load finished, fade out |
### Communications With
| Target | Method | Why |
|--------|--------|-----|
| [`WBP_LoadingScreen`](../06-ui/46_WBP_LoadingScreen.md) | Widget reference | Display control |
| [`FL_LevelStreaming`](../01-core/07_FL_LevelStreaming.md) | Direct call | Level load progress |
| [`SS_SaveManager`](../05-saveload/28_SS_SaveManager.md) | Direct call | Save/load operations |
| [`BPC_PerformanceScaler`](../10-adaptive/68_BPC_PerformanceScaler.md) | Direct call | Quality during load |
| [`DA_LoadingTips`](../12-content/79_DA_LoadingTips.md) | Data asset | Tip content |
### Reuse Notes
- Config-driven for different loading contexts (boot, level, save)
- Tip rotation prevents repetition during long loads
- MinDisplayTime prevents flash-loading on fast systems
- Background cycling adds visual variety
- Fade in/out duration configurable per context
- Asynchronous progress bound to actual load completion
- Compatible with both synchronous and async level loading