import { createRoom, joinRoom } from "../services/classroom.js"; import { generateMonsterSVG, MONSTER_DEFS } from "../utils/monsterUtils.js"; export function renderLandingView() { // Select Decor Monsters // Left: Genesis Dragon (L3_AAA), Right: Gundam (L3_BAA) - or fallbacks const mLeft = MONSTER_DEFS.find(m => m.id === 'L3_AAA') || MONSTER_DEFS.find(m => m.stage === 3); const mRight = MONSTER_DEFS.find(m => m.id === 'L3_BAA') || MONSTER_DEFS.find(m => m.stage === 3); const svgLeft = generateMonsterSVG(mLeft); const svgRight = generateMonsterSVG(mRight); return `

VIBECODING-怪獸成長營

`; } export function setupLandingEvents(navigateTo) { const joinBtn = document.getElementById('join-btn'); const instructorBtn = document.getElementById('instructor-mode-btn'); joinBtn.addEventListener('click', async () => { const roomCode = document.getElementById('room-code-input').value.trim(); const nickname = document.getElementById('nickname-input').value.trim(); if (!roomCode || !nickname) { alert('請輸入教室代碼和暱稱'); return; } try { joinBtn.textContent = '加入中...'; joinBtn.disabled = true; const studentId = await joinRoom(roomCode, nickname); // Save Session localStorage.setItem('vibecoding_user_id', studentId); localStorage.setItem('vibecoding_room_code', roomCode); localStorage.setItem('vibecoding_nickname', nickname); navigateTo('student'); } catch (error) { alert('加入失敗: ' + error.message); joinBtn.textContent = '進入教室'; joinBtn.disabled = false; } }); instructorBtn.addEventListener('click', () => { // Clear any previous admin referer to ensure clean state localStorage.removeItem('vibecoding_admin_referer'); navigateTo('instructor'); }); }