Implement 'startDialogue' interaction link handling and update dialogue link target

This commit is contained in:
2026-04-14 19:58:32 +02:00
parent b953340cd6
commit d951eda0da

View File

@@ -7127,6 +7127,14 @@ export function App({ store, initialStatusMessage }: AppProps) {
targetSoundEmitterId: link.action.targetSoundEmitterId
});
break;
case "startDialogue":
nextLink = createStartDialogueInteractionLink({
id: link.id,
sourceEntityId: link.sourceEntityId,
trigger,
dialogueId: link.action.dialogueId
});
break;
case "control":
nextLink = createControlInteractionLink({
id: link.id,
@@ -7161,6 +7169,29 @@ export function App({ store, initialStatusMessage }: AppProps) {
return;
}
if (actionType === "startDialogue") {
const defaultDialogue = projectDialogueList[0] ?? null;
if (defaultDialogue === null) {
setStatusMessage(
"Author a project dialogue before switching this link to dialogue."
);
return;
}
commitInteractionLinkChange(
link,
createStartDialogueInteractionLink({
id: link.id,
sourceEntityId: sourceEntity.id,
trigger: link.trigger,
dialogueId: defaultDialogue.id
}),
"Switched link action to start dialogue."
);
return;
}
if (actionType === "teleportPlayer") {
const defaultTarget = teleportTargetOptions[0]?.entity;
@@ -7319,6 +7350,26 @@ export function App({ store, initialStatusMessage }: AppProps) {
);
};
const updateDialogueInteractionLinkTarget = (
link: InteractionLink,
dialogueId: string
) => {
if (link.action.type !== "startDialogue") {
return;
}
commitInteractionLinkChange(
link,
createStartDialogueInteractionLink({
id: link.id,
sourceEntityId: link.sourceEntityId,
trigger: link.trigger,
dialogueId
}),
"Updated dialogue link target."
);
};
const updateTeleportInteractionLinkTarget = (
link: InteractionLink,
targetEntityId: string