import { useDrag } from 'react-dnd'; import { Center } from '@chakra-ui/react'; import PropTypes from 'prop-types'; import { useDraughtsBoard } from '../DraughtsBoardContext'; import { useDraughtsSettings } from '../../settings/DraughtsSettingsContext'; import { DraughtsCrown } from './DraughtsCrown'; import { compareCells, pieceIsPlayer, pieceIsQueen, Pieces, Players, } from '@draughts/core'; export function DraughtsPiece(props) { const { board } = useDraughtsBoard(); const { userPlayer } = useDraughtsSettings(); const isWhite = pieceIsPlayer(props.piece, Players.WHITE); const activePlayer = pieceIsPlayer(props.piece, userPlayer) && pieceIsPlayer(props.piece, board.playerToMove); const currentCell = { col: props.colIndex, row: props.rowIndex }; const canDrag = activePlayer && board.moves.some((move) => compareCells(move.path.at(0), currentCell)); const [, dragRef] = useDrag( () => ({ canDrag: () => canDrag, isDragging: (monitor) => compareCells(monitor.getItem(), currentCell), item: currentCell, type: 'piece', }), [board, canDrag, currentCell] ); return (
{pieceIsQueen(props.piece) && ( )}
); } DraughtsPiece.propTypes = { colIndex: PropTypes.number, piece: PropTypes.oneOf(Object.values(Pieces)).isRequired, rowIndex: PropTypes.number, };