import { find } from "cc"; import { ChatContentsLayout } from "../ui/components/ChatContentsLayout"; import { DemoData } from "../data/DialogData"; import { NavigationManager } from "./NavigationManager"; import Utils from "db://assets/Scripts/Main/Common/Utils"; import { InnerMsgCode } from "db://assets/Scripts/Main/Config/InnerMsgCode"; /** * 对话管理器 * * 专注于管理对话数据和对话流程,导航功能已迁移至NavigationManager * * @author AI Chat System * @version 2.0.0 */ export class DialogManager { private static _instance: DialogManager; /** * 获取DialogManager的单例实例 * * @returns {DialogManager} 对话管理器实例 * @static */ public static getInstance(): DialogManager { if (!this._instance) { this._instance = new DialogManager(); } return this._instance; } private constructor() { this.demoData = new DemoData(); } /** 对话数据实例 */ private demoData: DemoData; /** 当前主题ID */ private themeId = -1; /** 聊天内容布局组件引用 */ public layoutout: ChatContentsLayout; /** * 进入角色列表(委托给NavigationManager) * @deprecated 请直接使用 NavigationManager.Instance.navigateToGirlList() */ public EnterGirlList(id: number = null): void { console.warn( "DemoManager.EnterGirlList is deprecated, use NavigationManager instead" ); if (id != null) { this.themeId = id; } if (this.themeId !== -1) { NavigationManager.Instance.navigateToGirlList(this.themeId); } } /** * 进入聊天页面(委托给NavigationManager) * @deprecated 请直接使用 NavigationManager.Instance.navigateToChat() */ public EnterChat(id: number): void { console.warn( "DemoManager.EnterChat is deprecated, use NavigationManager instead" ); NavigationManager.Instance.navigateToChat(id); } /** * 进入角色详情页面(委托给NavigationManager) * @deprecated 请直接使用 NavigationManager.Instance.navigateToGirlDetail() */ public EnterDetail(id: number): void { console.warn( "DemoManager.EnterDetail is deprecated, use NavigationManager instead" ); NavigationManager.Instance.navigateToGirlDetail(id); } /** * 更新对话内容 * * @param {boolean} isPlayer - 是否为玩家消息 * @param {string} str - 消息内容 * @param {boolean} fromPlayer - 是否来自玩家输入(用于清理对话) */ public updateDialog( isPlayer: boolean, str: string, fromPlayer: boolean = false ): void { if (fromPlayer) { this.demoData.cleanDialog(); } this.demoData.pushDialog(isPlayer, str); console.log("Dialog updated:", { isPlayer, content: str.substring(0, 50) + "...", }); Utils.sendInnerMsg(InnerMsgCode.Chat_DialogRefresh); } /** * 获取所有对话记录 * * @returns {Dialog[]} 对话记录数组 */ public getDialogs() { return this.demoData.GetDialogs(); } /** * 清空当前对话记录 */ public clearDialogs(): void { this.demoData.cleanDialog(); console.log("All dialogs cleared"); Utils.sendInnerMsg(InnerMsgCode.Chat_DialogRefresh); } }