Phone runtime (2b): inventory phone on the board dials for real
The phone gains a session mode that reads the live directory (/phone) and dials (/dial); the inventory threads it through. On a campaign level the board shows an INVENTORY nav button that opens the tool rack, and connecting a call hands back to the campaign via /?resume=1 (a fast-path that resumes the current node instead of the splash). On Barricelli's note-board: open inventory -> phone -> dial 5550100 -> Glitch Hunter. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+3
-3
@@ -1,6 +1,6 @@
|
||||
import { useEffect, useRef, useState } from 'react'
|
||||
import * as THREE from 'three'
|
||||
import { buildPhone, CLOSED_ANGLE, PhonePreview } from './phone'
|
||||
import { buildPhone, CLOSED_ANGLE, PhonePreview, type PhoneSession } from './phone'
|
||||
|
||||
// A reusable "tools" inventory: a three.js rack you cycle through, one 3D tool at a
|
||||
// time, then USE to open it. Tool-driven (see TOOLS below), so it isn't tied to any
|
||||
@@ -85,13 +85,13 @@ function ToolRack({ index }: { index: number }) {
|
||||
return <div ref={stageRef} className="inv-stage" />
|
||||
}
|
||||
|
||||
export function Inventory({ onClose }: { onClose?: () => void }) {
|
||||
export function Inventory({ onClose, session }: { onClose?: () => void; session?: PhoneSession }) {
|
||||
const [index, setIndex] = useState(0)
|
||||
const [active, setActive] = useState<string | null>(null)
|
||||
|
||||
if (active) return <div className="inv-tool">
|
||||
<button className="inv-back" onClick={() => setActive(null)}>‹ TOOLS</button>
|
||||
{active === 'phone' ? <PhonePreview /> : <NotebookTool />}
|
||||
{active === 'phone' ? <PhonePreview session={session} /> : <NotebookTool />}
|
||||
</div>
|
||||
|
||||
return <div className="inv-backdrop">
|
||||
|
||||
Reference in New Issue
Block a user