import React, { useContext, useEffect } from 'react'; import { Flex, createStyles } from '@mantine/core'; import { DndContext } from '@dnd-kit/core' import Cell from '../../components/Cell'; import { ChessGameContext } from '../../context/chess-game-context'; import { socket } from '../../socket'; import { SOCKET_EVENTS } from '../../constants'; const { GAME_END } = SOCKET_EVENTS const useStyles = createStyles((theme) => ({ chessboard: { [theme.fn.largerThan('md')]: { width: '600px' }, [theme.fn.smallerThan('md')]: { width: '560px' }, [theme.fn.smallerThan('sm')]: { width: '360px', }, }, boardrow: { [theme.fn.largerThan('md')]: { height: '75px' }, [theme.fn.smallerThan('md')]: { height: '70px' }, [theme.fn.smallerThan('sm')]: { height: '45px' }, } })) const ChessBoard = ({ callbacks }) => { const { classes } = useStyles(); const { getChessBoard, handleDrop,selected,selectPiece,getPieceColor } = useContext(ChessGameContext) const chessBoard = getChessBoard(); const myColor = localStorage.getItem('myColor'); const roomID = localStorage.getItem('roomID'); const dragEndCallback =evt => { let from = evt.active.id; let to = evt.over.id; if(from !== to) { handleDrop({from,to}, callbacks.pieceDropCallback, () => { socket.emit(GAME_END, roomID); }); return; } if(from === to) { console.log("handleDrop",from,to); let moveData = from === to ? {from:selected,to} : {from,to}; handleDrop(moveData, callbacks.pieceDropCallback, () => { socket.emit(GAME_END, roomID); }); } else { console.log("handleDrop",from,to,"2"); let pieceColor = getPieceColor(to); pieceColor && selectPiece({square:to,color:pieceColor}); } } if (myColor === 'w') { return ( {chessBoard.map((row, rowIndex) => { return ( {row.map(cell => )} ) })} ) } else { return ( {chessBoard.map((row, rowIndex) => { return ( {row.map(cell => ).reverse()} ) }).reverse()} ) } } export default ChessBoard