Refactored modules and updated loader.
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
/**
|
||||
* 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');
|
||||
}
|
||||
Reference in New Issue
Block a user