diff --git a/src/features/academy/academyUI.js b/src/features/academy/academyUI.js index ee99ade..1bcb1fc 100644 --- a/src/features/academy/academyUI.js +++ b/src/features/academy/academyUI.js @@ -555,29 +555,66 @@ class AcademyUI { console.log('🎬 Media requirements:', mediaRequirements); // Get filtered media from library - const mediaItems = window.libraryManager.getMediaForPreferences( + let mediaItems = window.libraryManager.getMediaForPreferences( mediaRequirements.videoFilter, mediaRequirements.videoCount ); + // Fallback to all videos if no matches + if (mediaItems.length === 0) { + console.warn('⚠️ No media items matched preferences. Using all available videos.'); + mediaItems = window.libraryManager.getAllVideosWithMetadata(); + } + console.log('🎬 Loaded media for session:', mediaItems.length, 'items'); console.log('🎯 Preference filter:', preferenceFilter); console.log('⏱️ Session duration:', detailedConfig.session.duration); console.log('πŸ“‹ Tasks:', detailedConfig.tasks.length); console.log('🎯 Objectives:', detailedConfig.objectives); - // If we have media items, log their details - if (mediaItems.length > 0) { - console.log('πŸ“Ή Sample media item:', mediaItems[0]); - } else { - console.warn('⚠️ No media items matched preferences. Will use all available videos.'); - // Fallback to all videos if no matches - const allVideos = window.libraryManager.getAllVideosWithMetadata(); - console.log('πŸ“Ή Using all videos as fallback:', allVideos.length); + // Sync videos to videoPlayerManager for video playback + if (window.videoPlayerManager && mediaItems.length > 0) { + const videoPaths = mediaItems.map(item => item.path || item.fullPath); + window.videoPlayerManager.videoLibrary.background = videoPaths; + window.videoPlayerManager.videoLibrary.task = videoPaths; + window.videoPlayerManager.videoLibrary.reward = videoPaths; + window.videoPlayerManager.videoLibrary.punishment = videoPaths; + console.log(`πŸ”„ Synced ${videoPaths.length} videos to videoPlayerManager for Level ${levelConfig.levelNumber}`); } - // TODO: Integrate with existing startTrainingSession() in training-academy.html - // For now, just call the existing function if available + // Update trainingVideoLibrary global for training-academy.html + if (mediaItems.length > 0) { + window.trainingVideoLibrary = mediaItems; + console.log(`πŸ“Ή Set trainingVideoLibrary with ${mediaItems.length} videos`); + } + + // Enable video if this level requires it (has video media requirements) + if (detailedConfig.media && detailedConfig.media.videos && detailedConfig.media.videos.required > 0) { + // Load and update settings to enable video + const settings = typeof window.loadAcademySettings === 'function' + ? window.loadAcademySettings() + : { enableVideo: false }; + + if (!settings.enableVideo) { + console.log('🎬 Level requires video - enabling video in settings'); + settings.enableVideo = true; + if (typeof window.saveAcademySettings === 'function') { + window.saveAcademySettings(settings); + } + } + } + + // Set the selected training mode to trigger proper training flow + window.selectedTrainingMode = 'training-academy'; + + // Store current level info globally for access during session + window.currentAcademyLevel = { + levelNumber: levelConfig.levelNumber, + config: detailedConfig, + mediaRequirements: mediaRequirements + }; + + // Call the existing training session starter if (typeof window.startTrainingSession === 'function') { window.startTrainingSession(); } else { diff --git a/training-academy.html b/training-academy.html index 0af3a8e..e8df334 100644 --- a/training-academy.html +++ b/training-academy.html @@ -2969,9 +2969,32 @@ // Get settings for TTS and video const settings = loadAcademySettings(); + // Debug: Check video library status + console.log('🎬 Video library check:'); + console.log(' - trainingVideoLibrary length:', trainingVideoLibrary?.length || 0); + console.log(' - settings.enableVideo:', settings.enableVideo); + console.log(' - window.libraryManager exists:', !!window.libraryManager); + + // Ensure trainingVideoLibrary is populated + if ((!trainingVideoLibrary || trainingVideoLibrary.length === 0) && window.libraryManager) { + console.log('πŸ“Ή trainingVideoLibrary empty, loading from libraryManager...'); + const allVideos = window.libraryManager.getAllVideosWithMetadata(); + if (allVideos && allVideos.length > 0) { + trainingVideoLibrary = allVideos; + console.log(`βœ… Loaded ${trainingVideoLibrary.length} videos from libraryManager`); + } + } + // Start background video if enabled if (settings.enableVideo && trainingVideoLibrary.length > 0) { + console.log(`🎬 Starting video playback (${trainingVideoLibrary.length} videos available)`); startBackgroundVideo(); + } else { + if (!settings.enableVideo) { + console.log('⏸️ Video disabled in settings'); + } else { + console.warn('⚠️ No videos available for playback'); + } } // TTS announcement