// Variables globales pour les données let monsters = []; let quests = []; let announcements = []; // Éléments DOM const monsterListEl = document.getElementById('monsterList'); const modalMonsterNameEl = document.getElementById('modalMonsterName'); const questListEl = document.getElementById('questList'); const addQuestBtn = document.getElementById('addQuestBtn'); const addQuestForm = document.getElementById('addQuestForm'); const crownFilterEls = document.querySelectorAll('input[name="crownFilter"]'); const announcementAreaEl = document.getElementById('announcementArea'); const confirmDeleteBtn = document.getElementById('confirmDeleteBtn'); const monsterSearchEl = document.getElementById('monsterSearch'); const clearSearchBtn = document.getElementById('clearSearchBtn'); // Variables globales let currentMonsterId = null; let currentQuestToDelete = null; // Modales Bootstrap const questListModal = new bootstrap.Modal(document.getElementById('questListModal')); const addQuestModal = new bootstrap.Modal(document.getElementById('addQuestModal')); const deleteQuestModal = new bootstrap.Modal(document.getElementById('deleteQuestModal')); // Initialisation document.addEventListener('DOMContentLoaded', () => { loadData(); renderMonsterList(); initMonsterSearchSelect(); displayAnnouncements(); // Événements addQuestBtn.addEventListener('click', () => { resetMonsterSearchSelect(); addQuestModal.show(); }); addQuestForm.addEventListener('submit', handleAddQuest); crownFilterEls.forEach(radio => { radio.addEventListener('change', filterQuests); }); confirmDeleteBtn.addEventListener('click', handleDeleteQuest); // Événements pour la recherche monsterSearchEl.addEventListener('input', searchMonsters); clearSearchBtn.addEventListener('click', clearSearch); }); // Fonctions de chargement et sauvegarde des données function loadData() { // Vérifier si les données de jeu sont disponibles depuis data.js if (window.gameData) { // Copier les monstres depuis gameData monsters = [...window.gameData.monsters]; // Charger les quêtes depuis localStorage ou utiliser les données par défaut const storedQuests = localStorage.getItem('mhw_quests'); quests = storedQuests ? JSON.parse(storedQuests) : [...window.gameData.initialQuests]; // Charger les annonces depuis localStorage ou utiliser les données par défaut const storedAnnouncements = localStorage.getItem('mhw_announcements'); announcements = storedAnnouncements ? JSON.parse(storedAnnouncements) : [...window.gameData.initialAnnouncements]; } else { console.error("Erreur: données de jeu non disponibles. Assurez-vous que data.js est chargé avant main.js"); monsterListEl.innerHTML = `
${a.text}
`).join(''); announcementAreaEl.classList.remove('d-none'); } else { announcementAreaEl.classList.add('d-none'); } } // Rendu de la liste des monstres function renderMonsterList(filteredMonsters = null) { const monstersToRender = filteredMonsters || monsters; if (monstersToRender.length === 0) { monsterListEl.innerHTML = `Proposée par: ${quest.playerName} (ID: ${quest.playerId})
Ajoutée: ${freshness}