'use strict'; // === DEATH / WIN / COMPLETION SCREENS === function renderDeathScreen(container, state) { container.innerHTML = ''; container.style.background = 'rgba(20,0,0,0.9)'; const title = document.createElement('div'); title.className = 'menu-title'; title.textContent = 'YOU DIED'; title.style.color = '#FF0000'; container.appendChild(title); const dungeon = DUNGEONS[state.currentDungeon]; if (dungeon) { const subtitle = document.createElement('div'); subtitle.className = 'menu-subtitle'; subtitle.textContent = `${dungeon.name} - Room ${state.currentRoomIdx + 1}`; container.appendChild(subtitle); } const stats = document.createElement('div'); stats.style.cssText = 'font-family: monospace; font-size: 12px; color: #888; margin: 15px 0; text-align: center; line-height: 1.8;'; stats.innerHTML = ` Rooms Cleared: ${state.roomsCleared}
Enemies Defeated: ${state.enemiesDefeated}
Dungeons Completed: ${state.dungeonsCompleted} `; container.appendChild(stats); // Retry button const retryBtn = createMenuButton('Try Again', 0); retryBtn.addEventListener('click', () => { state.roomsCleared = 0; state.enemiesDefeated = 0; resetPlayer(); state.player.invincibleTimer = 1000; // Restore saved weapons for (const wName of saveData.weapons) { const wDef = WEAPONS.find(w => w.name === wName); if (wDef && !state.player.weapons.find(w => w.name === wName)) { state.player.weapons.push({ ...wDef }); } } if (state.player.weapons.length > 0 && !state.player.activeWeapon) { state.player.activeWeapon = state.player.weapons[0]; } state.currentRoomIdx = 0; state.dungeonRooms = generateDungeon(DUNGEONS[state.currentDungeon]); loadDungeonRoom(state.currentDungeon, 0); switchScreen(SCREEN_PLAYING); }); container.appendChild(retryBtn); // Dungeon select button const selectBtn = createMenuButton('Dungeon Select', 1); selectBtn.addEventListener('click', () => { switchScreen(SCREEN_DUNGEON_SELECT); }); container.appendChild(selectBtn); // Title button const titleBtn = createMenuButton('Title Screen', 2); titleBtn.addEventListener('click', () => { switchScreen(SCREEN_TITLE); }); container.appendChild(titleBtn); // Keyboard navigation const buttons = [retryBtn, selectBtn, titleBtn]; let selectedIndex = 0; buttons[0].classList.add('selected'); container.addEventListener('keydown', (e) => { if (e.code === 'ArrowDown' || e.code === 'KeyS') { e.preventDefault(); buttons[selectedIndex].classList.remove('selected'); selectedIndex = (selectedIndex + 1) % buttons.length; buttons[selectedIndex].classList.add('selected'); } if (e.code === 'ArrowUp' || e.code === 'KeyW') { e.preventDefault(); buttons[selectedIndex].classList.remove('selected'); selectedIndex = (selectedIndex - 1 + buttons.length) % buttons.length; buttons[selectedIndex].classList.add('selected'); } if (e.code === 'Enter' || e.code === 'Space') { e.preventDefault(); buttons[selectedIndex].click(); } }); } function renderDungeonCompleteScreen(container, state) { container.innerHTML = ''; container.style.background = 'rgba(0,10,0,0.9)'; const title = document.createElement('div'); title.className = 'menu-title'; title.textContent = 'DUNGEON CLEARED!'; title.style.color = '#00FF00'; container.appendChild(title); const dungeon = DUNGEONS[state.currentDungeon]; if (dungeon) { const subtitle = document.createElement('div'); subtitle.className = 'menu-subtitle'; subtitle.textContent = `${dungeon.name} conquered!`; container.appendChild(subtitle); } const stats = document.createElement('div'); stats.style.cssText = 'font-family: monospace; font-size: 12px; color: #AAA; margin: 15px 0; text-align: center; line-height: 1.8;'; stats.innerHTML = ` Rooms Cleared: ${state.roomsCleared}
Enemies Defeated: ${state.enemiesDefeated}
HP Remaining: ${state.player.hp}/${state.player.maxHp} `; container.appendChild(stats); const nextIdx = state.currentDungeon + 1; const hasNext = nextIdx < DUNGEONS.length; if (hasNext) { const nextDungeon = DUNGEONS[nextIdx]; const nextInfo = document.createElement('div'); nextInfo.style.cssText = 'font-family: monospace; font-size: 12px; color: #FFD700; margin: 8px 0; text-align: center;'; nextInfo.textContent = `Next: ${nextDungeon.name} (Difficulty: ${'★'.repeat(nextDungeon.difficulty)})`; container.appendChild(nextInfo); const nextBtn = createMenuButton('Next Dungeon', 0); nextBtn.addEventListener('click', () => { state.currentDungeon = nextIdx; state.currentRoomIdx = 0; state.roomsCleared = 0; state.dungeonRooms = generateDungeon(DUNGEONS[nextIdx]); resetPlayer(); switchScreen(SCREEN_PLAYING); }); container.appendChild(nextBtn); } const selectBtn = createMenuButton('Dungeon Select', hasNext ? 1 : 0); selectBtn.addEventListener('click', () => { switchScreen(SCREEN_DUNGEON_SELECT); }); container.appendChild(selectBtn); const titleBtn = createMenuButton('Title Screen', hasNext ? 2 : 1); titleBtn.addEventListener('click', () => { switchScreen(SCREEN_TITLE); }); container.appendChild(titleBtn); // Keyboard navigation const buttons = container.querySelectorAll('.menu-button'); let selectedIndex = 0; if (buttons.length) buttons[0].classList.add('selected'); container.addEventListener('keydown', (e) => { if (e.code === 'ArrowDown' || e.code === 'KeyS') { e.preventDefault(); buttons[selectedIndex].classList.remove('selected'); selectedIndex = (selectedIndex + 1) % buttons.length; buttons[selectedIndex].classList.add('selected'); } if (e.code === 'ArrowUp' || e.code === 'KeyW') { e.preventDefault(); buttons[selectedIndex].classList.remove('selected'); selectedIndex = (selectedIndex - 1 + buttons.length) % buttons.length; buttons[selectedIndex].classList.add('selected'); } if (e.code === 'Enter' || e.code === 'Space') { e.preventDefault(); buttons[selectedIndex].click(); } }); } function renderGameCompleteScreen(container, state) { container.innerHTML = ''; container.style.background = 'linear-gradient(180deg, #0a0a00 0%, #1a1a00 50%, #0a0a00 100%)'; const title = document.createElement('div'); title.className = 'menu-title'; title.textContent = 'ALL DUNGEONS CLEARED!'; title.style.color = '#FFD700'; title.style.fontSize = '24px'; container.appendChild(title); const subtitle = document.createElement('div'); subtitle.className = 'menu-subtitle'; subtitle.textContent = 'You are the true Hero of Dungeons!'; container.appendChild(subtitle); const sword = document.createElement('div'); sword.style.cssText = 'margin: 10px 0 20px; font-size: 36px; color: #FFD700;'; sword.textContent = '\u2694 \u2694 \u2694'; container.appendChild(sword); const stats = document.createElement('div'); stats.style.cssText = 'font-family: monospace; font-size: 13px; color: #DDD; margin: 10px 0; text-align: center; line-height: 2;'; stats.innerHTML = ` Dungeons Conquered: 100
Total Rooms Cleared: ${saveData.totalRoomsCleared}
Total Enemies Slain: ${saveData.totalEnemiesDefeated}
Weapons Found: ${saveData.weapons.length}/${WEAPONS.length}
Heart Pieces: ${saveData.heartPieces} `; container.appendChild(stats); const trophy = document.createElement('div'); trophy.style.cssText = 'font-size: 48px; margin: 15px 0;'; trophy.textContent = '\uD83C\uDFC6'; container.appendChild(trophy); const titleBtn = createMenuButton('Title Screen', 0); titleBtn.addEventListener('click', () => { switchScreen(SCREEN_TITLE); }); container.appendChild(titleBtn); const selectBtn = createMenuButton('Dungeon Select', 1); selectBtn.addEventListener('click', () => { switchScreen(SCREEN_DUNGEON_SELECT); }); container.appendChild(selectBtn); const buttons = [titleBtn, selectBtn]; let selectedIndex = 0; buttons[0].classList.add('selected'); container.addEventListener('keydown', (e) => { if (e.code === 'ArrowDown' || e.code === 'KeyS') { e.preventDefault(); buttons[selectedIndex].classList.remove('selected'); selectedIndex = (selectedIndex + 1) % buttons.length; buttons[selectedIndex].classList.add('selected'); } if (e.code === 'ArrowUp' || e.code === 'KeyW') { e.preventDefault(); buttons[selectedIndex].classList.remove('selected'); selectedIndex = (selectedIndex - 1 + buttons.length) % buttons.length; buttons[selectedIndex].classList.add('selected'); } if (e.code === 'Enter' || e.code === 'Space') { e.preventDefault(); buttons[selectedIndex].click(); } }); } if (typeof module !== 'undefined' && module.exports) { module.exports = { renderDeathScreen, renderDungeonCompleteScreen, renderGameCompleteScreen }; }