/
VictoriaKoltsova
/
AI_2026_Module2_Project2
Обзор
Документация
Войти
/
VictoriaKoltsova
/
AI_2026_Module2_Project2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
js/main.js
48 строк
3 KB
moskoltsova2009-ai
Build UK Quest game platform
09 авг 2026, 23:28
09 авг 2026, 23:28
54234c0
Код
Авторство
О чём код?
(() => { const { LEVELS } = window.UKQuestData; const { bindAudioControls } = window.UKQuestAudio; const { getLevelProgress, getPlayerLevel, loadProgress, resetProgress } = window.UKQuestStorage; function setText(selector, value) { document.querySelectorAll(selector).forEach((node) => { node.textContent = value; }); } function renderHome() { const progress = loadProgress(); const levelXP = getLevelProgress(progress.totalXP); const tower = progress.towerEscape; const road = progress.roadRush; const towerStages = { "guard-room": 5, "white-tower": 20, "raven-yard": 40, "secret-chamber": 60, "traitors-gate": 80 }; const towerPercent = tower.completed ? 100 : tower.started ? towerStages[tower.currentLocation] || 5 : 0; setText("[data-player-level]", `LEVEL ${getPlayerLevel(progress.totalXP)}`); setText("[data-xp-label]", `${levelXP.current} / ${levelXP.target} XP`); document.querySelectorAll("[data-xp-bar]").forEach((bar) => { bar.style.width = `${levelXP.percent}%`; }); setText("[data-tower-status]", !tower.started ? "NEW ESCAPE AVAILABLE" : tower.completed ? "ESCAPED ✓" : "ESCAPE IN PROGRESS"); setText("[data-tower-progress-card]", !tower.started ? "5 LOCATIONS · 4 HIDDEN SECRETS" : `${towerPercent}% COMPLETE · SECRETS ${tower.runSecrets.length} / 4`); setText("[data-road-status]", road.tourCompleted ? "UK TOUR COMPLETE ✓" : road.completedCities.length ? "TOUR IN PROGRESS" : "UK TOUR AVAILABLE"); setText("[data-road-progress-card]", `${road.completedCities.length} / 3 CITIES · ${road.unlockedSkins.length} / 5 CARS`); document.querySelectorAll("[data-preview-level]").forEach((item) => { const levelId = Number(item.dataset.previewLevel); const level = LEVELS.find((candidate) => candidate.id === levelId); const unlocked = levelId <= progress.unlockedLevel; item.classList.toggle("preview-locked", !unlocked); item.querySelector("[data-preview-landmark]").textContent = unlocked ? level.landmark : "Unknown landmark"; item.querySelector("[data-preview-copy]").textContent = unlocked ? (progress.completedLevels.includes(levelId) ? "Landmark discovered" : "Stop available") : `Complete level ${String(levelId - 1).padStart(2, "0")} to reveal`; }); } document.querySelector("[data-reset]")?.addEventListener("click", () => { if (window.confirm("Reset all UK Quest progress on this device?")) resetProgress(); }); const roadHow = document.querySelector("[data-road-how-modal]"); document.querySelector("[data-open-road-how]")?.addEventListener("click", () => roadHow.showModal()); document.querySelector("[data-close-road-modal]")?.addEventListener("click", () => roadHow.close()); roadHow?.addEventListener("click", (event) => { if (event.target === roadHow) roadHow.close(); }); window.addEventListener("ukquest:progress", renderHome); bindAudioControls(); renderHome(); })();