import { useDisclosure } from '@mantine/hooks'; import React, { useContext, useEffect } from 'react' import { ChessGameContext } from '../../context/chess-game-context'; import { socketBot as socket } from '../../socket'; import { getUserData } from '../../utils/auth'; import { Avatar, Button, Flex, MediaQuery, Modal, NavLink, Text, Title } from '@mantine/core'; import ChessBoard from '../Chess/ChessBoard'; import GameHistory from '../../components/GameHistory'; import { useNavigate } from 'react-router-dom'; import { SOCKET_EVENTS } from '../../constants'; const { CHESS_MOVE, GAME_END } = SOCKET_EVENTS const ChessGameComputer = () => { const { hasGameEnded, gameEndedReason, handleOpponentMove } = useContext(ChessGameContext); const [gameEndedModalOpen, modalFunctions] = useDisclosure(true); const navigate = useNavigate(); const user = getUserData(); let username = user.username; let color = localStorage.getItem('myColor') || 'w'; const roomID = localStorage.getItem('roomID'); useEffect(() => { socket.connect(); socket.emit('INIT', {color}); // socket.onAny(evt => { // console.log("event", evt); // }) socket.on("CHESS_BOT_MOVE", (data) => { handleOpponentMove(data, () => { socket.emit(GAME_END, roomID); }) }); return () => { socket.offAny(); socket.disconnect(); } }, []); const exitGame = () => { console.log("Ending game"); socket.disconnect(); localStorage.removeItem('myColor'); navigate("/play/computer"); } const pieceDropCallback = (moveData) => { socket.emit(CHESS_MOVE, roomID, moveData); } const pieceClickCallback = (moveData) => { // moveData contains fen string, from, to squares of the move socket.emit(CHESS_MOVE, roomID, moveData); } // const resign = () => { // socket.emit(USER_RESIGNED); // endGame('RESIGN'); // exitGame(); // } return ( Game ended due to {gameEndedReason}
// Computer // } icon = { computer-icon } description={"description"} />
{ // TODO: handle isWaiting state // false ? // <> // // // // // // // // : }
{username?.at(0).toUpperCase()} } description={"description"} />
Game Data
) } export default ChessGameComputer