From 7927b2c83fa92df62389f98710ff404bc59c20f0 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 15 Apr 2026 09:15:40 +0200 Subject: [PATCH] Replace dialogue selection with NpcDialoguesPanel component in App.tsx --- src/app/App.tsx | 119 +++++++++++++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 47 deletions(-) diff --git a/src/app/App.tsx b/src/app/App.tsx index 90c132a6..69d421db 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -17346,53 +17346,78 @@ export function App({ store, initialStatusMessage }: AppProps) {
Dialogue
-
-
- {selectedNpc.dialogueId === null - ? "Unassigned" - : selectedNpcDialogue?.title ?? "Missing Dialogue"} -
-
- {selectedNpc.dialogueId === null - ? "Assign a project dialogue to let this NPC open a conversation directly on click." - : selectedNpcDialogue === null - ? `This NPC references ${selectedNpc.dialogueId}, but the dialogue resource is missing.` - : `${selectedNpcDialogue.lines.length} line${selectedNpcDialogue.lines.length === 1 ? "" : "s"} in this project dialogue.`} -
-
- -
- This uses the same project dialogue library and - runtime dialogue-start path as existing interaction - links. -
+ + updateSelectedNpcDialogues( + "Set NPC default dialogue", + "Updated NPC default dialogue.", + (dialogues) => ({ + dialogues, + defaultDialogueId: dialogueId + }) + ) + } + onAddDialogue={handleAddNpcDialogue} + onDeleteDialogue={handleDeleteNpcDialogue} + onSetDialogueTitle={(dialogueId, title) => + updateNpcDialogue( + dialogueId, + "Rename NPC dialogue", + "Updated NPC dialogue title.", + (dialogue) => { + dialogue.title = title.trim() || "Untitled Dialogue"; + } + ) + } + onAddDialogueLine={(dialogueId) => + updateNpcDialogue( + dialogueId, + "Add NPC dialogue line", + "Added NPC dialogue line.", + (dialogue) => { + dialogue.lines.push(createProjectDialogueLine()); + } + ) + } + onDeleteDialogueLine={(dialogueId, lineId) => + updateNpcDialogue( + dialogueId, + "Delete NPC dialogue line", + "Deleted NPC dialogue line.", + (dialogue) => { + dialogue.lines = dialogue.lines.filter( + (line) => line.id !== lineId + ); + } + ) + } + onSetDialogueLineSpeaker={(dialogueId, lineId, speakerName) => + updateNpcDialogueLine( + dialogueId, + lineId, + "Set NPC dialogue speaker", + "Updated NPC dialogue speaker.", + (line) => { + line.speakerName = speakerName?.trim() || null; + } + ) + } + onSetDialogueLineText={(dialogueId, lineId, text) => + updateNpcDialogueLine( + dialogueId, + lineId, + "Set NPC dialogue line text", + "Updated NPC dialogue line text.", + (line) => { + line.text = text.trim() || "..."; + } + ) + } + />