@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
TypeScript
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 {
/**
* 所有場景的集合
*/
[ ]: Scene;
}
/**
* 角色圖片配置
*/
interface CharacterImages {
/**
* 默認狀態圖片
*/
default: string;
/**
* 其他情緒/表情狀態圖片
*/
[ ]: string;
}
/**
* 角色音頻配置
*/
interface CharacterSounds {
/**
* 默認語音
*/
default?: 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 };