'use strict' const api = window.rpInstaller const state = { packs: [], selectedKey: null, installing: false, installed: false, resourcepackPath: '' } const pageHost = document.getElementById('pageHost') const stepIndicator = document.getElementById('stepIndicator') const logViewer = document.getElementById('logViewer') const logBody = document.getElementById('logBody') const logToggle = document.getElementById('logToggle') logToggle.addEventListener('click', function () { logViewer.classList.toggle('collapsed') if (logViewer.classList.contains('collapsed')) { logViewer.style.height = '36px' logToggle.textContent = '펼치기' } else { logViewer.style.height = '' logToggle.textContent = '접기' } }) api.onLog(function (line) { logViewer.hidden = false logBody.textContent += line + '\n' logBody.scrollTop = logBody.scrollHeight }) function setActiveStep(step) { stepIndicator.querySelectorAll('li').forEach(function (item) { var index = Number(item.getAttribute('data-step')) item.classList.remove('active', 'done') if (index < step) item.classList.add('done') if (index === step) item.classList.add('active') }) } function clearPage() { pageHost.innerHTML = '' } // ── 1단계: 음악퀴즈 선택 ──────────────────────────── function renderStep1() { setActiveStep(1) clearPage() var section = document.createElement('section') section.className = 'page' section.innerHTML = '
목록을 불러오는 중...
등록된 음악퀴즈가 없습니다.
' return } state.packs.forEach(function (pack) { var card = document.createElement('button') card.type = 'button' card.className = 'choiceCard' if (state.selectedKey === pack.key) card.classList.add('active') card.innerHTML = '' + escapeHtml(pack.name) + '' + '음악 ' + pack.list.music.length + '곡 · 사진 ' + pack.list.images.length + '장' card.addEventListener('click', function () { state.selectedKey = pack.key nextBtn.disabled = false renderList() }) listEl.appendChild(card) }) } nextBtn.addEventListener('click', function () { if (!state.selectedKey) return api.selectPack(state.selectedKey).then(function () { renderStep2() }).catch(function (err) { alert(err.message || '선택 실패') }) }) api.loadPacks().then(function (packs) { state.packs = packs || [] renderList() }).catch(function (err) { listEl.innerHTML = '목록 로드 실패: ' + escapeHtml(err.message || '') + '
' }) } // ── 2단계: 설치 진행 ──────────────────────────────── function renderStep2() { setActiveStep(2) clearPage() var section = document.createElement('section') section.className = 'page' section.innerHTML = '아래 "다음"을 누르면 음악·사진을 받아 리소스팩을 만들고 ' +
'%appdata%/.minecraft/resourcepacks/ 에 넣습니다.
리소스팩 설치를 완료했습니다.
' + (state.resourcepackPath ? '' + escapeHtml(state.resourcepackPath) + '