-
{current.speaker.name}{current.speaker.role && {current.speaker.role}}
+
{current.speaker.name}{current.speaker.role && {current.speaker.role}}
+ {onCapture && !inline && current.utterer === 'npc' && done && }
+
{fullText.slice(0, charCount)}{done ? '' : '▍'}
{showChoices
?
{options.map(option => )}
diff --git a/src/phone.tsx b/src/phone.tsx
index a3b1f29..dfc46c3 100644
--- a/src/phone.tsx
+++ b/src/phone.tsx
@@ -264,16 +264,22 @@ function PhoneScreen({ visible, mode, dialed, callee }: { visible: boolean; mode
}
-export function PhonePreview() {
- const [open, setOpen] = useState(false)
+// In-game the phone runs against a live playthrough: it dials the connected phone
+// node's directory and, on connect, hands back to the campaign runtime.
+export type PhoneSession = { playthroughId: string; onConnect: () => void }
+
+export function PhonePreview({ session }: { session?: PhoneSession } = {}) {
+ const [open, setOpen] = useState(Boolean(session)) // in-game the handset opens on its own
const [screenOn, setScreenOn] = useState(false)
const [mode, setMode] = useState