UNPKG

@marshal604/react-game-dialogue

Version:

A React UI library for creating dialogue systems with a game-like interface | 一個專為 React 應用開發的對話系統 UI 套件,提供類遊戲風格的對話介面

177 lines (172 loc) 3.24 kB
import React from 'react'; /** * 選項類型定義 */ interface Choice { /** * 選項顯示文本 */ text: string; /** * 選項圖標(可選) */ icon?: string; /** * 選擇後跳轉的場景ID */ next?: string; } /** * 序列中的單個項目 */ interface SequenceItem { /** * 對話文本內容 */ text: string; /** * 說話角色的ID(不設置則為旁白) */ speaker?: string; /** * 角色情緒/表情 */ emotion?: string; /** * 角色在畫面中的位置(左/右/中) */ position?: 'left' | 'right' | 'center'; /** * 背景圖片路徑(可在序列中途變更) */ background?: string; /** * 對話選項列表 */ choices?: Choice[]; /** * 音效路徑 */ sound?: string; /** * 對話框樣式覆蓋 */ style?: Record<string, any>; /** * 對話結束後跳轉的場景ID */ next?: string; } /** * 場景定義 */ interface Scene { /** * 場景背景圖片 */ background: string; /** * 對話序列 */ sequence: SequenceItem[]; } /** * 對話系統配置 */ interface DialogueConfig { /** * 所有場景的集合 */ [key: string]: Scene; } /** * 角色圖片配置 */ interface CharacterImages { /** * 默認狀態圖片 */ default: string; /** * 其他情緒/表情狀態圖片 */ [key: string]: string; } /** * 角色音頻配置 */ interface CharacterSounds { /** * 默認語音 */ default?: string; /** * 特定情緒/動作的音效 */ [key: string]: string | undefined; } /** * 角色配置 */ interface CharacterConfig { /** * 角色名稱 */ name: string; /** * 角色圖片集 */ images: CharacterImages; /** * 角色語音/音效(可選) */ sounds?: CharacterSounds; /** * 角色對話文字顏色 */ textColor?: string; /** * 默認位置 */ defaultPosition?: 'left' | 'right' | 'center'; /** * 文字顯示速度(毫秒/字符) */ textSpeed?: number; } interface ReactGameDialogueProps { /** * 角色配置集合 */ characters: Record<string, CharacterConfig>; /** * 對話配置 */ dialogue: DialogueConfig; /** * 起始場景 */ startScene: string; /** * 對話開始的回調 */ onMessageStart?: (item: SequenceItem) => void; /** * 對話結束的回調 */ onMessageEnd?: (item: SequenceItem) => void; /** * 場景結束的回調 */ onSceneEnd?: (item: SequenceItem) => void; /** * 全部對話結束的回調 */ onAllDialogueEnd?: () => void; } /** * React Dialogic 統一入口組件 * 將 DialogContextProvider 和 DialogSystem 封裝在一起,提供更簡單的使用方式 */ declare const ReactGameDialogue: React.FC<ReactGameDialogueProps>; export { CharacterConfig, CharacterImages, CharacterSounds, Choice, DialogueConfig, ReactGameDialogue, ReactGameDialogueProps, Scene, SequenceItem };