Beispiel #1
0
        public void AddPiece(EPieceType pieceType, Square square, Player side)
        {
            var piece = pieceType.MakePiece(side);

            BoardPieces[piece.AsInt()] |= square;
            OccupiedBySide[side.Side]  |= square;
            BoardLayout[square.AsInt()] = piece;

            if (!IsProbing)
            {
                PieceUpdated?.Invoke(piece, square);
            }
        }
Beispiel #2
0
        public void RemovePiece(Square square, Piece piece)
        {
            var invertedSq = ~square;

            BoardPieces[piece.AsInt()]      &= invertedSq;
            OccupiedBySide[piece.ColorOf()] &= invertedSq;
            BoardLayout[square.AsInt()]      = PieceExtensions.EmptyPiece;
            if (IsProbing)
            {
                return;
            }
            PieceUpdated?.Invoke(EPieces.NoPiece, square);
        }
Beispiel #3
0
        public void AddPiece(Piece piece, Square square)
        {
            BitBoard bbsq  = square;
            var      color = piece.ColorOf();

            BoardPieces[piece.AsInt()] |= bbsq;
            OccupiedBySide[color]      |= bbsq;
            BoardLayout[square.AsInt()] = piece;

            if (!IsProbing)
            {
                PieceUpdated?.Invoke(piece, square);
            }
        }