diff --git a/vite/public/assets/number/0.mp3 b/vite/public/assets/number/0.mp3 new file mode 100644 index 0000000..92d9567 Binary files /dev/null and b/vite/public/assets/number/0.mp3 differ diff --git a/vite/public/assets/number/1.mp3 b/vite/public/assets/number/1.mp3 new file mode 100644 index 0000000..b7541f1 Binary files /dev/null and b/vite/public/assets/number/1.mp3 differ diff --git a/vite/public/assets/number/2.mp3 b/vite/public/assets/number/2.mp3 new file mode 100644 index 0000000..9b1e126 Binary files /dev/null and b/vite/public/assets/number/2.mp3 differ diff --git a/vite/public/assets/number/3.mp3 b/vite/public/assets/number/3.mp3 new file mode 100644 index 0000000..c236a52 Binary files /dev/null and b/vite/public/assets/number/3.mp3 differ diff --git a/vite/public/assets/number/4.mp3 b/vite/public/assets/number/4.mp3 new file mode 100644 index 0000000..b2b485d Binary files /dev/null and b/vite/public/assets/number/4.mp3 differ diff --git a/vite/public/assets/number/5.mp3 b/vite/public/assets/number/5.mp3 new file mode 100644 index 0000000..68c846a Binary files /dev/null and b/vite/public/assets/number/5.mp3 differ diff --git a/vite/public/assets/number/6.mp3 b/vite/public/assets/number/6.mp3 new file mode 100644 index 0000000..8cef879 Binary files /dev/null and b/vite/public/assets/number/6.mp3 differ diff --git a/vite/public/assets/number/7.mp3 b/vite/public/assets/number/7.mp3 new file mode 100644 index 0000000..0c92a44 Binary files /dev/null and b/vite/public/assets/number/7.mp3 differ diff --git a/vite/public/assets/number/8.mp3 b/vite/public/assets/number/8.mp3 new file mode 100644 index 0000000..549dbc9 Binary files /dev/null and b/vite/public/assets/number/8.mp3 differ diff --git a/vite/public/assets/number/9.mp3 b/vite/public/assets/number/9.mp3 new file mode 100644 index 0000000..b4ce93f Binary files /dev/null and b/vite/public/assets/number/9.mp3 differ diff --git a/vite/public/assets/q4-1.mp3 b/vite/public/assets/q4-1.mp3 new file mode 100644 index 0000000..990aece Binary files /dev/null and b/vite/public/assets/q4-1.mp3 differ diff --git a/vite/public/assets/q4.mp3 b/vite/public/assets/q4.mp3 index 6ae54a0..0e4a8f0 100644 Binary files a/vite/public/assets/q4.mp3 and b/vite/public/assets/q4.mp3 differ diff --git a/vite/public/cuelist.json b/vite/public/cuelist.json index 0e0ec01..5896d03 100644 --- a/vite/public/cuelist.json +++ b/vite/public/cuelist.json @@ -29,65 +29,76 @@ "id": 4, "name": "Q4", "type": "phone", - "description": "Guide to construct scene", - "auto": true, + "description": "Guide to call", + "auto": false, "audioFile": "assets/q4.mp3", - "nextcue": 4.1 + "nextcue": 4.1, + "callback":"numpad" }, { "id": 4.1, "name": "Q4.1", - "type": "chat", - "description": "chat-1 system", + "type": "phone", + "description": "Guide to construct scene", "auto": true, + "audioFile": "assets/q4-1.mp3", "nextcue": 4.2 }, { "id": 4.2, "name": "Q4.2", - "type": "user_input", - "description": "chat-1 user", + "type": "chat", + "description": "chat-1 system", "auto": true, - "duration": 20, - "nextcue": 4.3 + "nextcue": 4.3, + "callback":"start_conversation" }, { "id": 4.3, "name": "Q4.3", - "type": "chat", - "description": "chat-2 system", + "type": "user_input", + "description": "chat-1 user", "auto": true, + "duration": 20, "nextcue": 4.4 }, { "id": 4.4, "name": "Q4.4", - "type": "user_input", - "description": "chat-2 user", + "type": "chat", + "description": "chat-2 system", "auto": true, - "duration": 20, "nextcue": 4.5 }, { "id": 4.5, - "name": "Q4.1", - "type": "chat", - "description": "chat-3 system", + "name": "Q4.5", + "type": "user_input", + "description": "chat-2 user", "auto": true, + "duration": 20, "nextcue": 4.6 }, { "id": 4.6, "name": "Q4.6", - "type": "user_input", - "description": "chat-3 user", + "type": "chat", + "description": "chat-3 system", "auto": true, - "duration": 20, "nextcue": 4.7 }, { "id": 4.7, "name": "Q4.7", + "type": "user_input", + "description": "chat-3 user", + "auto": true, + "duration": 20, + "nextcue": 4.8 + }, + { + "id": 4.8, + "name": "Q4.8", "type": "chat", "description": "chat-3 system", "auto": true, diff --git a/vite/src/comps/numpad.jsx b/vite/src/comps/numpad.jsx new file mode 100644 index 0000000..1719cd9 --- /dev/null +++ b/vite/src/comps/numpad.jsx @@ -0,0 +1,75 @@ +import { use, useEffect, useRef, useState } from "react"; + +const KEY_ENTER='q'; +const KEY_BACKSPACE='a'; + +export default function NumPad({onSend}){ + + const [input, _setInput]=useState(); + const refInput=useRef(); + const setInput=(valueFunc)=>{ + if(typeof valueFunc==='function'){ + _setInput(valueFunc(refInput.current)); + refInput.current=valueFunc(refInput.current); + }else{ + _setInput(valueFunc); + refInput.current=valueFunc; + } + } + + const refAudio=useRef([]); + + function onkeydown(e){ + // console.log(e.key); + + if(e.key===KEY_ENTER){ + + if(refInput.current && refInput.current.length>0){ + const num=parseInt(refInput.current); + if(num>=1 && num<=24) onSend(num); + setInput(()=>''); + } + return; + }else if(e.key===KEY_BACKSPACE || e.key==='Backspace' || e.key==='Delete'){ + setInput((prev)=>prev?.slice(0,-1)); + return; + } + + const numKey = parseInt(e.key); + if(isNaN(numKey) || numKey < 0 || numKey > 9) return; // Ignore non-numeric keys + + refAudio.current[numKey]?.play(); + setInput((prev)=>`${prev||''}${e.key}`); + + + } + + + useEffect(() => { + + refAudio.current = [...Array(10).keys()].map(index =>{ + const file=`assets/number/${index}.mp3`; + // console.log(`Loading audio file: ${file}`); + return new Audio(file); + }); + + },[]); + + + useEffect(()=>{ + + window.onkeydown=onkeydown; + + return () => { + window.onkeydown=null; // Clean up the event listener + }; + + },[]); + + return ( +