[Piece] Refactor PieceType

This commit is contained in:
2022-12-20 22:12:48 +01:00
parent 4787e41c23
commit 2f8cebc2c4
2 changed files with 31 additions and 17 deletions

View File

@@ -23,16 +23,14 @@ PieceType Piece::type() const {
return mType;
}
std::optional<PieceType> Piece::pieceTypeFromSymbol(char symbol) {
auto tryType = static_cast<PieceType>(toupper(symbol));
switch (tryType) {
case PieceType::Pawn: return PieceType::Pawn;
case PieceType::Knight: return PieceType::Knight;
case PieceType::Bishop: return PieceType::Bishop;
case PieceType::Rook: return PieceType::Rook;
case PieceType::Queen: return PieceType::Queen;
case PieceType::King: return PieceType::King;
default:return std::nullopt;
switch (toupper(symbol)) {
case 'P': return PieceType::Pawn;
case 'N': return PieceType::Knight;
case 'B': return PieceType::Bishop;
case 'R': return PieceType::Rook;
case 'Q': return PieceType::Queen;
case 'K': return PieceType::King;
default: return std::nullopt;
}
}
@@ -41,7 +39,23 @@ bool operator==(const Piece &lhs, const Piece &rhs) {
}
std::ostream &operator<<(std::ostream &os, const Piece &piece) {
int typeNum = static_cast<int>(piece.type());
int typeNum;
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;
}
if (piece.color() == PieceColor::Black) {
typeNum = std::tolower(typeNum);
}