import { useState } from 'react'
import './GameManagementModal.css'
const GameManagementModal = ({
isOpen,
onClose,
room,
participants,
currentQuestion,
currentQuestionIndex,
totalQuestions,
revealedAnswers,
onStartGame,
onEndGame,
onNextQuestion,
onPreviousQuestion,
onRevealAnswer,
onHideAnswer,
onShowAllAnswers,
onHideAllAnswers,
onAwardPoints,
onPenalty,
}) => {
const [activeTab, setActiveTab] = useState('players') // players | game | answers | scoring
const [selectedPlayer, setSelectedPlayer] = useState(null)
const [customPoints, setCustomPoints] = useState(10)
if (!isOpen) return null
const gameStatus = room?.status || 'WAITING'
const areAllAnswersRevealed = currentQuestion
? revealedAnswers.length === currentQuestion.answers.length
: false
// Handlers
const handleBackdropClick = (e) => {
if (e.target === e.currentTarget) onClose()
}
const handleRevealAnswer = (index) => {
if (revealedAnswers.includes(index)) {
onHideAnswer(index)
} else {
onRevealAnswer(index)
}
}
const handleAwardPoints = (points) => {
if (selectedPlayer) {
onAwardPoints(selectedPlayer, points)
}
}
const handlePenalty = () => {
if (selectedPlayer) {
onPenalty(selectedPlayer)
}
}
return (
{/* Header with title and close button */}
🎛 Управление игрой
{/* Tabs navigation */}
{/* Tab content */}
{/* PLAYERS TAB */}
{activeTab === 'players' && (
Участники ({participants.length})
{participants.length === 0 ? (
Нет участников
) : (
participants.map((participant) => (
{participant.name}
{participant.role === 'HOST' && '👑 Ведущий'}
{participant.role === 'SPECTATOR' && '👀 Зритель'}
{participant.score || 0} очков
))
)}
)}
{/* GAME CONTROLS TAB */}
{activeTab === 'game' && (
Управление игрой
Статус:
{gameStatus === 'WAITING' && ' Ожидание'}
{gameStatus === 'PLAYING' && ' Идет игра'}
{gameStatus === 'FINISHED' && ' Завершена'}
{gameStatus === 'WAITING' && (
)}
{gameStatus === 'PLAYING' && (
Вопрос {currentQuestionIndex + 1} / {totalQuestions}
)}
Игроков: {participants.length}
{gameStatus === 'PLAYING' && totalQuestions > 0 && (
Вопросов: {totalQuestions}
)}
)}
{/* ANSWERS CONTROL TAB */}
{activeTab === 'answers' && currentQuestion && (
Управление ответами
{currentQuestion.answers.map((answer, index) => (
))}
)}
{/* SCORING TAB */}
{activeTab === 'scoring' && (
Начисление очков
{selectedPlayer && (
)}
)}
)
}
export default GameManagementModal