181 lines
6.7 KiB
JavaScript
181 lines
6.7 KiB
JavaScript
/**
|
||
* INPUT REMAPPING & SUBTITLE SYSTEM - QUICK TEST SCRIPT
|
||
*
|
||
* Copy-paste this into browser console (F12) to test all features
|
||
* Make sure the game is running first!
|
||
*/
|
||
|
||
console.log('🎮 Starting Input Remapping & Subtitle System Test Suite...\n');
|
||
|
||
// Get systems
|
||
const visualCues = game.scene.scenes[1].visualSoundCues;
|
||
const inputSystem = game.scene.scenes[1].inputRemapping;
|
||
|
||
// ========== SUBTITLE SIZE TESTING ==========
|
||
console.log('📏 Test 1: Subtitle Sizes');
|
||
|
||
setTimeout(() => {
|
||
console.log('Testing SMALL size...');
|
||
visualCues.setSubtitleSize('small');
|
||
visualCues.showSubtitle('This is SMALL text', 2000, 'System');
|
||
}, 1000);
|
||
|
||
setTimeout(() => {
|
||
console.log('Testing MEDIUM size...');
|
||
visualCues.setSubtitleSize('medium');
|
||
visualCues.showSubtitle('This is MEDIUM text', 2000, 'System');
|
||
}, 3500);
|
||
|
||
setTimeout(() => {
|
||
console.log('Testing LARGE size...');
|
||
visualCues.setSubtitleSize('large');
|
||
visualCues.showSubtitle('This is LARGE text', 2000, 'System');
|
||
}, 6000);
|
||
|
||
setTimeout(() => {
|
||
console.log('Testing VERY LARGE size...');
|
||
visualCues.setSubtitleSize('very-large');
|
||
visualCues.showSubtitle('This is VERY LARGE text', 2000, 'System');
|
||
}, 8500);
|
||
|
||
setTimeout(() => {
|
||
console.log('Resetting to MEDIUM...');
|
||
visualCues.setSubtitleSize('medium');
|
||
}, 11000);
|
||
|
||
// ========== INPUT REMAPPING TESTING ==========
|
||
console.log('\n🎮 Test 2: Input Remapping');
|
||
|
||
setTimeout(() => {
|
||
console.log('\n=== DEFAULT PROFILE ===');
|
||
console.log('Move Up:', inputSystem.getBindingDisplay('move_up'));
|
||
console.log('Move Down:', inputSystem.getBindingDisplay('move_down'));
|
||
console.log('Move Left:', inputSystem.getBindingDisplay('move_left'));
|
||
console.log('Move Right:', inputSystem.getBindingDisplay('move_right'));
|
||
console.log('Interact:', inputSystem.getBindingDisplay('interact'));
|
||
console.log('Attack:', inputSystem.getBindingDisplay('attack'));
|
||
console.log('Inventory:', inputSystem.getBindingDisplay('inventory'));
|
||
console.log('Sprint:', inputSystem.getBindingDisplay('sprint'));
|
||
}, 12000);
|
||
|
||
setTimeout(() => {
|
||
console.log('\n=== SWITCHING TO LEFT-HANDED PROFILE ===');
|
||
inputSystem.switchProfile('left-handed');
|
||
console.log('Move Up:', inputSystem.getBindingDisplay('move_up'));
|
||
console.log('Move Down:', inputSystem.getBindingDisplay('move_down'));
|
||
console.log('Move Left:', inputSystem.getBindingDisplay('move_left'));
|
||
console.log('Move Right:', inputSystem.getBindingDisplay('move_right'));
|
||
console.log('Interact:', inputSystem.getBindingDisplay('interact'));
|
||
}, 14000);
|
||
|
||
setTimeout(() => {
|
||
console.log('\n=== SWITCHING TO ARROWS PROFILE ===');
|
||
inputSystem.switchProfile('arrows');
|
||
console.log('Move Up:', inputSystem.getBindingDisplay('move_up'));
|
||
console.log('Move Down:', inputSystem.getBindingDisplay('move_down'));
|
||
console.log('Move Left:', inputSystem.getBindingDisplay('move_left'));
|
||
console.log('Move Right:', inputSystem.getBindingDisplay('move_right'));
|
||
}, 16000);
|
||
|
||
setTimeout(() => {
|
||
console.log('\n=== BACK TO DEFAULT PROFILE ===');
|
||
inputSystem.switchProfile('default');
|
||
console.log('Current profile:', inputSystem.getCurrentProfile());
|
||
}, 18000);
|
||
|
||
// ========== CONTROLLER TESTING ==========
|
||
setTimeout(() => {
|
||
console.log('\n🎮 Test 3: Controller Detection');
|
||
const isConnected = inputSystem.isControllerConnected();
|
||
console.log('Controller connected:', isConnected);
|
||
|
||
if (isConnected) {
|
||
const info = inputSystem.getControllerInfo();
|
||
console.log('Controller info:', info);
|
||
console.log('A button:', inputSystem.getControllerButtonName('A'));
|
||
console.log('Start button:', inputSystem.getControllerButtonName('START'));
|
||
} else {
|
||
console.log('ℹ️ No controller detected. Connect a controller to test.');
|
||
}
|
||
}, 20000);
|
||
|
||
// ========== EXPORT/IMPORT TESTING ==========
|
||
setTimeout(() => {
|
||
console.log('\n💾 Test 4: Export/Import Bindings');
|
||
const exported = inputSystem.exportBindings();
|
||
console.log('Exported bindings (first 200 chars):', exported.substring(0, 200) + '...');
|
||
|
||
// Test import
|
||
const success = inputSystem.importBindings(exported);
|
||
console.log('Import success:', success);
|
||
}, 22000);
|
||
|
||
// ========== PROFILE LISTING ==========
|
||
setTimeout(() => {
|
||
console.log('\n📋 Test 5: Available Profiles');
|
||
const profiles = inputSystem.getProfiles();
|
||
console.log('All profiles:', profiles);
|
||
console.log('Current profile:', inputSystem.getCurrentProfile());
|
||
}, 24000);
|
||
|
||
// ========== COMBINED TEST ==========
|
||
setTimeout(() => {
|
||
console.log('\n🎨 Test 6: Combined Features');
|
||
|
||
// Large subtitles with speaker
|
||
visualCues.setSubtitleSize('large');
|
||
visualCues.showSubtitle('Testing large subtitles with speaker!', 3000, 'NPC', 'left');
|
||
|
||
console.log('Subtitle size: LARGE');
|
||
console.log('Speaker: NPC (yellow)');
|
||
console.log('Direction: LEFT (arrow)');
|
||
}, 26000);
|
||
|
||
setTimeout(() => {
|
||
// Very large subtitles
|
||
visualCues.setSubtitleSize('very-large');
|
||
visualCues.showSubtitle('VERY LARGE TEXT!', 3000, 'System', 'both');
|
||
|
||
console.log('Subtitle size: VERY LARGE');
|
||
console.log('Direction: BOTH (arrows)');
|
||
}, 29500);
|
||
|
||
setTimeout(() => {
|
||
// Reset to medium
|
||
visualCues.setSubtitleSize('medium');
|
||
}, 33000);
|
||
|
||
// ========== REBINDING DEMO ==========
|
||
setTimeout(() => {
|
||
console.log('\n🔧 Test 7: Rebinding Demo');
|
||
console.log('ℹ️ To test rebinding, run this command:');
|
||
console.log(' inputSystem.startRebinding("interact", (action, key) => {');
|
||
console.log(' console.log(`Rebound ${action} to ${key}`);');
|
||
console.log(' });');
|
||
console.log('Then press any key to rebind, or ESC to cancel.');
|
||
}, 34000);
|
||
|
||
// ========== FINAL SUMMARY ==========
|
||
setTimeout(() => {
|
||
console.log('\n✅ Test Suite Complete!');
|
||
console.log('\n📋 Summary:');
|
||
console.log(' - Subtitle Sizes (4 sizes): ✅');
|
||
console.log(' - Input Remapping: ✅');
|
||
console.log(' - Profile Switching: ✅');
|
||
console.log(' - Controller Detection: ✅');
|
||
console.log(' - Export/Import: ✅');
|
||
console.log(' - One-Handed Layouts: ✅');
|
||
console.log('\n🎉 All features working correctly!');
|
||
console.log('\n📖 See testing guides for detailed instructions:');
|
||
console.log(' - CLOSED_CAPTIONS_TESTING.md');
|
||
console.log(' - INPUT_REMAPPING_TESTING.md');
|
||
|
||
console.log('\n🎮 Quick Commands:');
|
||
console.log(' visualCues.setSubtitleSize("small|medium|large|very-large")');
|
||
console.log(' inputSystem.switchProfile("default|left-handed|arrows")');
|
||
console.log(' inputSystem.getBindingDisplay("action_name")');
|
||
console.log(' inputSystem.startRebinding("action_name", callback)');
|
||
}, 36000);
|
||
|
||
console.log('\n⏱️ Test will run for ~40 seconds. Watch the screen and console!\n');
|