/** * Debug Utilities Module for AI Interactive Fiction * Provides debugging and testing tools */ import { BaseModule } from './base-module.js'; export class DebugUtilsModule extends BaseModule { constructor() { super('debug-utils', 'Debug Utilities'); // Declare dependencies explicitly this.dependencies = ['text-buffer', 'socket-client', 'tts-player', 'ui-controller', 'game-loop']; } /** * Initialize the debug utilities module * @returns {boolean} - Success status */ async initialize() { console.log('Debug Utilities: Initializing'); // Make utilities available globally for console access window.DebugUtils = { testTextPipeline: this.testTextPipeline.bind(this), testSocketConnection: this.testSocketConnection.bind(this), testTTS: this.testTTS.bind(this), forceReconnect: this.forceReconnect.bind(this) }; console.log('Debug Utilities: Debug tools are now available via window.DebugUtils'); this.isReady = true; return true; } /** * Test the text processing pipeline with sample text * @param {string} text - Test text to process * @returns {boolean} - Success status */ testTextPipeline(text = "This is a test sentence. Let's see if it displays correctly!") { console.log("Debug: Testing text pipeline with:", text); // Get the text buffer module properly through dependency system const textBuffer = this.getModule('text-buffer'); if (!textBuffer) { console.error("Debug: TextBuffer module not found"); return false; } textBuffer.addText(text); console.log("Debug: Text added to buffer"); return true; } /** * Test the socket connection * @returns {boolean} - Success status */ testSocketConnection() { console.log("Debug: Testing socket connection"); // Get the socket client module properly through dependency system const socketClient = this.getModule('socket-client'); if (!socketClient) { console.error("Debug: SocketClient module not found"); return false; } if (socketClient.isConnected) { console.log("Debug: Socket is connected"); return true; } else { console.log("Debug: Socket is not connected, attempting connection"); socketClient.connect(); return false; } } /** * Test the TTS system * @param {string} text - Test text to speak * @returns {boolean} - Success status */ testTTS(text = "This is a test of the text to speech system.") { console.log("Debug: Testing TTS with:", text); // Get the TTS module properly through dependency system const ttsPlayer = this.getModule('tts-player'); if (!ttsPlayer) { console.error("Debug: TTS module not found"); return false; } const wasEnabled = ttsPlayer.isEnabled(); // Enable TTS temporarily if it was disabled if (!wasEnabled && ttsPlayer.toggle) { ttsPlayer.toggle(); } // Speak the text ttsPlayer.speak(text, (result) => { console.log("Debug: TTS completed with result:", result); // Restore previous enabled state if (!wasEnabled && ttsPlayer.toggle) { ttsPlayer.toggle(); } }); return true; } /** * Force all modules to reconnect * @returns {boolean} - Success status */ forceReconnect() { console.log("Debug: Forcing module reconnection"); // Get all required modules properly through dependency system const uiController = this.getModule('ui-controller'); const socketClient = this.getModule('socket-client'); const gameLoop = this.getModule('game-loop'); const textBuffer = this.getModule('text-buffer'); const ttsHandler = this.getModule('tts-player'); // Check if all modules are available if (!uiController || !socketClient || !gameLoop || !textBuffer || !ttsHandler) { console.error("Debug: One or more required modules not found"); return false; } // UI Controller if (uiController.textBuffer === null) { uiController.textBuffer = textBuffer; console.log("Debug: Reconnected UI Controller to Text Buffer"); // Reinitialize text buffer if (uiController.initializeTextBuffer) { uiController.initializeTextBuffer(); } } if (uiController.ttsHandler === null) { uiController.ttsHandler = ttsHandler; console.log("Debug: Reconnected UI Controller to TTS Player"); } // Socket Client if (socketClient.textBuffer === null) { socketClient.textBuffer = textBuffer; console.log("Debug: Reconnected Socket Client to Text Buffer"); } // Game Loop if (gameLoop.uiController === null) { gameLoop.uiController = uiController; console.log("Debug: Reconnected Game Loop to UI Controller"); } if (gameLoop.socketClient === null) { gameLoop.socketClient = socketClient; console.log("Debug: Reconnected Game Loop to Socket Client"); } if (gameLoop.textBuffer === null) { gameLoop.textBuffer = textBuffer; console.log("Debug: Reconnected Game Loop to Text Buffer"); } return true; } } // Register the module with the module registry if (window.moduleRegistry) { try { const debugUtilsModule = new DebugUtilsModule(); window.moduleRegistry.register(debugUtilsModule); console.log('Debug Utilities Module registered successfully'); } catch (err) { console.error('Failed to register Debug Utilities Module:', err); } } else { console.error('Module registry not available when attempting to register Debug Utilities Module'); }