[Move] Fix streaming with promotion
This commit is contained in:
44
Piece.cpp
44
Piece.cpp
@@ -35,38 +35,42 @@ std::optional<PieceType> Piece::pieceTypeFromSymbol(char symbol) {
|
||||
}
|
||||
}
|
||||
|
||||
char Piece::toSymbol() const {
|
||||
return toSymbol(mType);
|
||||
}
|
||||
|
||||
char Piece::toSymbol(PieceType type) {
|
||||
switch (type) {
|
||||
case PieceType::Pawn: return 'p';
|
||||
case PieceType::Knight: return 'n';
|
||||
case PieceType::Bishop: return 'b';
|
||||
case PieceType::Rook: return 'r';
|
||||
case PieceType::Queen: return 'q';
|
||||
case PieceType::King: return 'k';
|
||||
}
|
||||
|
||||
return '\0';
|
||||
}
|
||||
|
||||
bool operator==(const Piece &lhs, const Piece &rhs) {
|
||||
return lhs.color() == rhs.color() && lhs.type() == rhs.type();
|
||||
}
|
||||
|
||||
std::ostream &operator<<(std::ostream &os, const Piece &piece) {
|
||||
int typeNum;
|
||||
int typeNum = piece.toSymbol();
|
||||
|
||||
switch (piece.type()) {
|
||||
case PieceType::Pawn: typeNum = 'P';
|
||||
break;
|
||||
case PieceType::Knight: typeNum = 'N';
|
||||
break;
|
||||
case PieceType::Bishop: typeNum = 'B';
|
||||
break;
|
||||
case PieceType::Rook:typeNum = 'R';
|
||||
break;
|
||||
case PieceType::Queen: typeNum = 'Q';
|
||||
break;
|
||||
case PieceType::King: typeNum = 'K';
|
||||
break;
|
||||
default:
|
||||
return os;
|
||||
}
|
||||
|
||||
if (piece.color() == PieceColor::Black) {
|
||||
typeNum = std::tolower(typeNum);
|
||||
if (piece.color() == PieceColor::White) {
|
||||
typeNum = std::toupper(typeNum);
|
||||
}
|
||||
|
||||
os << static_cast<char>(typeNum);
|
||||
return os;
|
||||
}
|
||||
|
||||
std::ostream &operator<<(std::ostream &os, const PieceType &pt) {
|
||||
return os << Piece::toSymbol(pt);
|
||||
}
|
||||
|
||||
PieceColor operator!(PieceColor color) {
|
||||
return static_cast<PieceColor>((static_cast<int>(color) + 1) % 2);
|
||||
}
|
||||
|
Reference in New Issue
Block a user