Files
RGKT/rg-09112127/js/gameVirtualTeacher.js
2025-10-10 19:44:14 +08:00

154 lines
3.8 KiB
JavaScript

/**
* 游戏虚拟老师集成脚本
* 为游戏页面提供虚拟老师功能的通用集成
*/
class GameVirtualTeacher {
constructor() {
this.isInitialized = false;
}
/**
* 初始化虚拟老师集成
*/
async init(gameInfo = {}) {
if (this.isInitialized) return;
try {
// 等待虚拟老师模块加载
if (!window.virtualTeacher) {
console.warn('虚拟老师模块未加载,跳过初始化');
return;
}
// 初始化虚拟老师
await window.virtualTeacher.init();
console.log('🦉 游戏虚拟老师集成初始化成功');
// 不立即播放游戏介绍,由游戏页面控制播放时机
this.gameIntro = gameInfo.intro;
this.isInitialized = true;
} catch (error) {
console.error('游戏虚拟老师集成初始化失败:', error);
}
}
/**
* 游戏开始
*/
gameStart(gameName, gameData = {}) {
if (!window.virtualTeacher || !this.isInitialized) return;
// 重置统计
window.virtualTeacher.resetStats();
// 游戏开始提示
window.virtualTeacher.gameStart(gameName);
// 播放游戏介绍(如果有的话)
if (this.gameIntro) {
setTimeout(() => {
window.virtualTeacher.speak(this.gameIntro);
}, 500);
}
console.log('🦉 虚拟老师:游戏开始 -', gameName);
}
/**
* 显示题目
*/
showQuestion(questionText, questionNumber = 1, totalQuestions = 1) {
if (!window.virtualTeacher || !this.isInitialized) return;
// 停止当前语音
window.virtualTeacher.stopAllSpeech();
// 延迟播放题目语音
setTimeout(() => {
const fullQuestionText = `${questionNumber}题:${questionText}`;
window.virtualTeacher.readQuestion(fullQuestionText);
}, 200);
}
/**
* 记录正确答案
*/
recordCorrect() {
if (!window.virtualTeacher || !this.isInitialized) return;
// 停止当前语音
window.virtualTeacher.stopAllSpeech();
// 延迟播放反馈语音
setTimeout(() => {
window.virtualTeacher.recordCorrect();
}, 100);
}
/**
* 记录错误答案
*/
recordIncorrect() {
if (!window.virtualTeacher || !this.isInitialized) return;
// 停止当前语音
window.virtualTeacher.stopAllSpeech();
// 延迟播放反馈语音
setTimeout(() => {
window.virtualTeacher.recordIncorrect();
}, 100);
}
/**
* 游戏结束
*/
gameEnd() {
if (!window.virtualTeacher || !this.isInitialized) return;
// 立即停止所有语音
window.virtualTeacher.stopAllSpeech();
// 延迟一点再播放游戏结束语音
setTimeout(() => {
window.virtualTeacher.gameEnd();
}, 500);
}
/**
* 停止所有语音
*/
stopAllSpeech() {
if (!window.virtualTeacher || !this.isInitialized) return;
window.virtualTeacher.stopAllSpeech();
}
/**
* 自定义语音
*/
speak(text, options = {}) {
if (!window.virtualTeacher || !this.isInitialized) return;
window.virtualTeacher.speak(text, options);
}
/**
* 改变表情
*/
changeExpression(expression) {
if (!window.virtualTeacher || !this.isInitialized) return;
window.virtualTeacher.changeExpression(expression);
}
}
// 创建全局实例
window.gameVirtualTeacher = new GameVirtualTeacher();
// 导出类
if (typeof module !== 'undefined' && module.exports) {
module.exports = GameVirtualTeacher;
}