Fix image loading and consequence task issues

FIXED IMAGE ISSUES:
- Update getRandomImage() to include linked directory images in image pool
- Update popupImageManager to use linked images for punishment popups
- Store linked images globally as window.linkedImages for component access
- Both consequences and popup images now use all available image sources

FIXED CONSEQUENCE TASKS:
- Update loadConsequenceTask() to use GameDataManager instead of empty gameData.consequenceTasks
- Add fallback to legacy system if GameDataManager unavailable
- Add safety fallback task if no consequence tasks found
- Consequences should now show proper tasks from mainGameData.js instead of 'complete your task'

RESULT: Images and consequences now use linked directories + proper task content
This commit is contained in:
dilgenfritz 2025-11-03 19:18:04 -06:00
parent 8c355ed54e
commit 1e33a465a9
2 changed files with 44 additions and 8 deletions

View File

@ -147,6 +147,9 @@ class TaskChallengeGame {
try {
const linkedImages = await this.getLinkedImages();
// Store linked images globally for access by other components
window.linkedImages = linkedImages;
// Separate images into task and consequence categories if needed
// For now, use all linked images as task images
const taskImages = linkedImages.map(img => img.path);
@ -4836,7 +4839,17 @@ ${usagePercent > 85 ? '⚠️ Storage getting full - consider deleting some imag
}
loadConsequenceTask() {
const availableTasks = gameData.consequenceTasks.filter(
// Get consequence tasks from GameDataManager or fallback to legacy
let consequenceTasks = [];
if (this.dataManager && this.dataManager.gameDataManager) {
consequenceTasks = this.dataManager.gameDataManager.getConsequenceTasksForMode('main') || [];
} else {
// Fallback to legacy gameData
consequenceTasks = gameData.consequenceTasks || [];
}
const availableTasks = consequenceTasks.filter(
task => !this.gameState.usedConsequenceTasks.includes(task.id)
);
@ -4845,12 +4858,23 @@ ${usagePercent > 85 ? '⚠️ Storage getting full - consider deleting some imag
this.gameState.usedConsequenceTasks = [];
}
const tasksToChooseFrom = availableTasks.length > 0 ? availableTasks : gameData.consequenceTasks;
const randomIndex = Math.floor(Math.random() * tasksToChooseFrom.length);
this.gameState.currentTask = {
...tasksToChooseFrom[randomIndex],
image: this.getRandomImage(true) // true = consequence task image
};
const tasksToChooseFrom = availableTasks.length > 0 ? availableTasks : consequenceTasks;
if (tasksToChooseFrom.length === 0) {
console.warn('No consequence tasks available, using fallback');
this.gameState.currentTask = {
id: 'fallback-consequence',
text: 'Take a 30 second break and then continue your training',
image: this.getRandomImage(true)
};
} else {
const randomIndex = Math.floor(Math.random() * tasksToChooseFrom.length);
this.gameState.currentTask = {
...tasksToChooseFrom[randomIndex],
image: this.getRandomImage(true) // true = consequence task image
};
}
this.gameState.isConsequenceTask = true;
}
@ -4869,6 +4893,12 @@ ${usagePercent > 85 ? '⚠️ Storage getting full - consider deleting some imag
usedImagesArray = this.gameState.usedTaskImages;
}
// Add linked images from directories to the pool
if (window.linkedImages && Array.isArray(window.linkedImages)) {
const linkedImagePaths = window.linkedImages.map(img => img.path);
imagePool = [...imagePool, ...linkedImagePaths];
}
// Add custom images to the pool
const customImages = this.dataManager.get('customImages') || { task: [], consequence: [] };

View File

@ -507,6 +507,12 @@ class PopupImageManager {
// Get consequence images from the game's discovery system
const discoveredImages = gameData.discoveredConsequenceImages || [];
// Add linked images from directories
let linkedImages = [];
if (window.linkedImages && Array.isArray(window.linkedImages)) {
linkedImages = window.linkedImages.map(img => img.path);
}
// Get custom consequence images
const customImages = this.dataManager.get('customImages') || { task: [], consequence: [] };
let customConsequenceImages = [];
@ -519,7 +525,7 @@ class PopupImageManager {
const disabledImages = this.dataManager.get('disabledImages') || [];
// Combine and filter images
const allImages = [...discoveredImages, ...customConsequenceImages];
const allImages = [...discoveredImages, ...linkedImages, ...customConsequenceImages];
const availableImages = allImages.filter(img => {
const imagePath = typeof img === 'string' ? img : (img.cachedPath || img.originalName);
return !disabledImages.includes(imagePath);