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); } }
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); }
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); } }