/** * AdminPanel.jsx — Debug/admin panel for SynthQuest * Allows adding/removing stars and unlocking levels for testing */ import React, { useState } from 'react'; import { loadProgress, saveProgress, resetProgress } from './gameState.js'; export default function AdminPanel({ worlds, onClose, adminMode, onToggleAdmin }) { const [, refresh] = useState(0); const p = loadProgress(); const totalStars = Object.values(p.completedLevels).reduce((s, l) => s + (l.stars || 0), 0); const setStars = (levelId, stars) => { if (stars <= 0) { delete p.completedLevels[levelId]; } else { p.completedLevels[levelId] = { stars: Math.min(3, stars), completedAt: Date.now() }; } saveProgress(); refresh(n => n + 1); }; const unlockWorld = (world) => { // Give 1 star to each level in all previous worlds up to the requirement let needed = world.unlockStars || 0; for (const w of worlds) { if (w.id === world.id) break; for (const level of w.levels) { if (needed <= 0) break; const existing = p.completedLevels[level.id]?.stars || 0; if (existing < 1) { p.completedLevels[level.id] = { stars: 1, completedAt: Date.now() }; needed -= 1; } } } saveProgress(); refresh(n => n + 1); }; const giveAllStars = () => { for (const w of worlds) { for (const level of w.levels) { p.completedLevels[level.id] = { stars: 3, completedAt: Date.now() }; } } saveProgress(); refresh(n => n + 1); }; const handleReset = () => { resetProgress(); refresh(n => n + 1); }; return (