
jpmschweitzerandClaude Sonnet 4.6
1765e2922f
refactor(ui): monologue display — multi-line architecture per Tyre review (#122)
Rewrites the monologue display system per Tyre architecture review (Sprint 14):
Rendering:
- Up to 3 simultaneous visible lines (VBoxContainer, dynamic node creation)
- Lines created programmatically as MarginContainer > RichTextLabel per slot
- Percentage-based anchors: 5% left, 75–98% vertical (25% area from bottom), 50% max width
- Z-layer 7 in UILayer (CanvasLayer 20, D-049)
Queue:
- 5-entry priority queue; highest priority drains first
- On overflow: incoming line replaces lowest-priority queued entry if it outranks it
- Lower/equal priority incoming lines silently dropped when queue full
API:
show_monologue(text, duration, priority=2, is_urgent=false)
- Replaces old (text, duration, character_type) signature
- main.gd passes priority and is_urgent from MonologueEvent fields
- Confrontation monologue: priority=3, is_urgent=true (D-063)
Colour:
- Reads GameState.lattice_profile at render time (D-032)
- lattice_augmented (detective): standard #d0d4e0 / urgent #e0e8f8
- lattice_baseline (smuggler): standard #d8d0c4 / urgent #f0e4d4
- Fallback for unknown profiles; no crash
Stagger: 0.15s between consecutive fade-ins (spec §5.4)
Opacity: standard 0.85, urgent 1.0; bloom deferred
GameState: adds lattice_profile field, parsed from snapshot
Tests: 27 gdUnit4 test cases — queue order, priority drop, overflow, stagger,
no-overwrite (P0 #477), BBCode output, palette selection, slot lifecycle
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 18:39:49 +01:00
..
2026-02-19 18:10:06 +01:00
2026-02-18 09:45:13 +01:00
2026-02-18 11:51:41 +01:00
2026-02-19 12:19:41 +01:00
2026-02-18 11:51:41 +01:00
2026-02-19 18:19:32 +01:00
2026-02-19 18:37:23 +01:00
2026-02-19 12:19:41 +01:00
2026-02-16 23:26:28 +01:00
2026-02-18 11:51:41 +01:00
2026-02-18 12:53:35 +01:00
2026-02-17 16:35:19 +01:00
2026-02-18 11:51:41 +01:00
2026-02-18 09:46:08 +01:00
2026-02-18 11:51:41 +01:00
2026-02-18 18:28:37 +01:00
2026-02-18 11:51:41 +01:00
2026-02-19 09:06:42 +01:00
2026-02-19 12:05:36 +01:00
2026-02-18 11:51:41 +01:00
2026-02-13 00:05:07 +01:00
2026-02-12 23:43:37 +01:00
2026-02-15 23:06:03 +01:00
2026-02-18 11:51:41 +01:00
2026-02-19 12:19:41 +01:00
2026-02-18 18:28:37 +01:00
2026-02-13 01:48:35 +01:00
2026-02-14 09:49:41 +01:00
2026-02-19 12:19:41 +01:00
2026-02-19 12:19:41 +01:00
2026-02-18 11:51:41 +01:00
2026-02-18 01:41:27 +01:00
2026-02-12 23:43:37 +01:00
2026-02-19 12:19:41 +01:00
2026-02-11 20:59:46 +01:00
2026-02-11 16:52:27 +01:00
2026-02-11 16:52:27 +01:00
2026-02-20 18:39:49 +01:00
2026-02-18 02:14:29 +01:00
2026-02-18 11:51:41 +01:00
2026-02-18 01:41:18 +01:00
2026-02-18 11:51:41 +01:00
2026-02-18 01:41:27 +01:00
2026-02-18 11:51:41 +01:00
2026-02-17 16:35:19 +01:00
2026-02-18 11:51:41 +01:00
2026-02-18 01:41:27 +01:00
2026-02-11 19:16:56 +01:00
2026-02-19 15:03:10 +01:00
2026-02-12 23:43:37 +01:00
2026-02-13 02:07:43 +01:00
2026-02-11 19:16:56 +01:00
2026-02-19 14:59:50 +01:00
2026-02-13 00:05:07 +01:00
2026-02-12 23:43:37 +01:00
2026-02-13 18:07:15 +01:00
2026-02-14 09:49:41 +01:00