`;
archiveList.appendChild(questElement);
});
// Add event listeners to view buttons
document.querySelectorAll('.view-details').forEach(button => {
button.addEventListener('click', function() {
const index = parseInt(this.getAttribute('data-index'));
viewQuestDetails(savedQuests[index]);
});
});
}
// View full quest details
function viewQuestDetails(quest) {
// Update the generator tab with this quest
document.getElementById('genre').value = quest.genre;
document.getElementById('complexity').value = quest.complexity;
document.getElementById('tone').value = quest.tone;
document.getElementById('quest-type').textContent = quest.type;
document.getElementById('quest-genre').textContent = quest.genre.charAt(0).toUpperCase() + quest.genre.slice(1);
document.getElementById('quest-title').textContent = quest.title;
document.getElementById('quest-hook').textContent = quest.hook;
document.getElementById('quest-objective').textContent = quest.objective;
document.getElementById('quest-complication').textContent = quest.complication;
document.getElementById('quest-reward').textContent = quest.reward;
document.getElementById('quest-complexity').textContent =
document.getElementById('complexity').options[document.getElementById('complexity').selectedIndex].text;
document.getElementById('quest-tone').textContent =
document.getElementById('tone').options[document.getElementById('tone').selectedIndex].text;
// Show results and switch tab
document.getElementById('quest-results').style.display = 'block';
document.querySelector('.tab-button[data-tab="generator-tab"]').click();
}
// Generate PDF
function generatePDF() {
if (!currentQuest) {
alert('Please generate a quest first');
return;
}
const { jsPDF } = window.jspdf;
const doc = new jsPDF();
// Title
doc.setFontSize(18);
doc.text(`Quest: ${currentQuest.title}`, 10, 15);
// Metadata
doc.setFontSize(12);
doc.text(`Type: ${currentQuest.type}`, 10, 25);
doc.text(`Genre: ${currentQuest.genre.charAt(0).toUpperCase() + currentQuest.genre.slice(1)}`, 10, 32);
doc.text(`Complexity: ${document.getElementById('complexity').options[document.getElementById('complexity').selectedIndex].text}`, 10, 39);
doc.text(`Tone: ${document.getElementById('tone').options[document.getElementById('tone').selectedIndex].text}`, 10, 46);
// Content
doc.setFontSize(14);
doc.text('Hook:', 10, 60);
doc.setFontSize(12);
doc.text(doc.splitTextToSize(currentQuest.hook, 180), 10, 68);
doc.setFontSize(14);
doc.text('Objective:', 10, 88);
doc.setFontSize(12);
doc.text(doc.splitTextToSize(currentQuest.objective, 180), 10, 96);
doc.setFontSize(14);
doc.text('Complication:', 10, 116);
doc.setFontSize(12);
doc.text(doc.splitTextToSize(currentQuest.complication, 180), 10, 124);
doc.setFontSize(14);
doc.text('Reward:', 10, 144);
doc.setFontSize(12);
doc.text(doc.splitTextToSize(currentQuest.reward, 180), 10, 152);
// Save PDF
doc.save(`quest-${currentQuest.title.toLowerCase().replace(/ /g, '-')}.pdf`);
}
// Initialize with a generated quest
let currentQuest = null;
generateQuest();
});
