add blueprints
This commit is contained in:
106
docs/blueprints/06-ui/50_WBP_JournalDocumentViewer.md
Normal file
106
docs/blueprints/06-ui/50_WBP_JournalDocumentViewer.md
Normal 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
|
||||
Reference in New Issue
Block a user