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,106 @@
# WBP_JournalDocumentViewer — Widget (Document and Journal Viewer)
**File:** [`Content/Framework/UI/WBP_JournalDocumentViewer`](Content/Framework/UI/WBP_JournalDocumentViewer.uasset)
**Parent Class:** `UUserWidget`
**Dependencies:** [`BPC_DocumentArchiveSystem`](../04-inventory/BPC_DocumentArchiveSystem.md), [`BPC_JournalSystem`](../04-inventory/BPC_JournalSystem.md)
**Purpose:** Displays collected documents, notes, and the player journal. Supports text scrolling, page turns, and image plates. Read-only presentation — never modifies game state.
---
## Variables
| Name | Type | Description |
|------|------|-------------|
| `ActiveDocument` | S_DocumentEntry | Currently displayed document |
| `DocumentList` | Array of S_DocumentEntry | All collected documents for sidebar navigation |
| `ActiveJournalEntry` | S_JournalEntry | Currently displayed journal entry |
| `JournalEntryList` | Array of S_JournalEntry | All journal entries for sidebar navigation |
| `bShowPageTurnAnim` | Bool | Enable page turn animation |
| `FontStyle` | E_DocumentFontStyle | Handwritten, Typewritten, Digital |
| `ViewMode` | E_DocumentViewMode | Document, Journal, or Combined |
| `DocumentTitleText` | TextBlock | Active document title |
| `DocumentBodyText` | RichTextBlock | Scrollable document body |
| `DocumentImage` | Image | Optional plate/figure image |
| `SidebarList` | ListView | Navigation sidebar |
## Enums
```cpp
E_DocumentFontStyle
{
Handwritten,
Typewritten,
Digital,
BloodScrawled
}
E_DocumentViewMode
{
DocumentsOnly,
JournalOnly,
CombinedTimeline
}
```
## Functions / Events
| Name | Inputs | Outputs | What it does |
|------|--------|---------|--------------|
| `OpenDocument` | DocumentTag: GameplayTag | — | Loads document from archive, displays with font style |
| `CloseDocument` | — | — | Returns to document list |
| `OpenJournal` | EntryTag: GameplayTag | — | Loads journal entry, displays |
| `NextDocument` | — | — | Selects next document in list |
| `PreviousDocument` | — | — | Selects previous document in list |
| `NextPage` | — | — | Scrolls body text to next page |
| `PreviousPage` | — | — | Scrolls body text to previous page |
| `SetViewMode` | Mode: E_DocumentViewMode | — | Switches between document/journal/combined |
| `MarkAsRead` | DocumentTag: GameplayTag | — | Sets bIsRead on document entry |
| `RefreshList` | — | — | Rebuilds sidebar from archive and journal systems |
| `SortByChapter` | — | — | Sorts documents/entries by discovery chapter |
| `SortByType` | — | — | Sorts documents by type, entries by date |
## Event Dispatchers
| Name | Parameters | Fired when |
|------|-----------|-----------|
| `OnDocumentOpened` | DocumentTag: GameplayTag | Player opens a document |
| `OnDocumentClosed` | — | Player closes document viewer |
| `OnDocumentRead` | DocumentTag: GameplayTag | Document marked as read |
## Blueprint Flow Diagram
```mermaid
flowchart TD
A[Player opens Journal/Documents] --> B[ViewMode = CombinedTimeline]
B --> C[RefreshList from BPC_DocumentArchiveSystem + BPC_JournalSystem]
C --> D[Populate SidebarList]
D --> E[Wait for selection]
E --> F{Item selected?}
F -->|Document| G[OpenDocument with DocumentTag]
F -->|Journal Entry| H[OpenJournal with EntryTag]
G --> I[Set ActiveDocument = entry from archive]
I --> J[Display title, body text, optional image]
I --> K[MarkAsRead]
H --> L[Set ActiveJournalEntry]
L --> M[Display heading, body, timestamp]
```
## Communications With
| Target System | Method | Why |
|---------------|--------|-----|
| `BPC_DocumentArchiveSystem` | Direct read | Get all found documents |
| `BPC_JournalSystem` | Direct read | Get all journal entries |
| `WBP_InventoryMenu` | Parent navigation | Open from inventory tab |
| `SS_UIManager` | Push/Pop | Menu stack management |
## Reuse Notes
- The `E_DocumentFontStyle` enum lets each project set the visual tone per document type
- `ViewMode` can be restricted to DocumentsOnly for games without a journal
- The page-turn anim is optional; disable for performance or minimalist UI
- RichTextBlock supports markup — use for emphasis, different speaker colours, or lore highlight