'use client'; import { Suspense, useEffect, useState } from 'react'; import Link from 'next/link'; import { useSearchParams } from 'next/navigation'; import DicePlane from './diceplane'; import { DEFAULT_ASSETS, getAssets } from './asset-storage'; import { useRoom } from '@/lib/rooms/client'; function GamePageInner() { const searchParams = useSearchParams(); const roomId = searchParams.get('roomId'); const [backgroundSrc, setBackgroundSrc] = useState(DEFAULT_ASSETS.background); const [ready, setReady] = useState(false); const [simAmount, setSimAmount] = useState(1000); const { room, error, consumeDice, simulateDonation } = useRoom(roomId); const chzzkOn = Boolean(room?.settings.chzzkEnabled); const manualMode = Boolean(roomId) && room != null && !chzzkOn; useEffect(() => { setBackgroundSrc(getAssets().background); setReady(true); }, []); return (
주사위 큐: {room?.diceQueue ?? '…'}
{room?.settings.channelId && (채널 ID: {room.settings.channelId}
)} {room && ({room.channelName || room.settings.channelId || '—'} · {room.chatStatus} {` · ${room.settings.cheesePerDice}원/${ room.settings.multiplyByCheese ? `배수${room.settings.maxMultiplier > 0 ? `≤${room.settings.maxMultiplier}` : ''}` : '1회' }`}
)} {error &&{error}
} {room?.chatError &&{room.chatError}
} {room?.lastDonations?.[0] && (최근: {room.lastDonations[0].donatorNickname}{' '} {room.lastDonations[0].payAmount}원 → +{room.lastDonations[0].diceAdded}
)}수동 모드
치지직·채팅 연동 없음 · 주사위는 자유롭게 굴릴 수 있습니다.
{error &&{error}
}