[Piece] Add Piece::pieceTypeFromSymbol
This commit is contained in:
37
Piece.cpp
37
Piece.cpp
@@ -6,28 +6,13 @@ Piece::Piece(PieceColor color, PieceType type) : mColor(color), mType(type) {
|
||||
}
|
||||
|
||||
Piece::Optional Piece::fromSymbol(char symbol) {
|
||||
PieceType type;
|
||||
PieceColor color = std::isupper(symbol) ? PieceColor::White : PieceColor::Black;
|
||||
|
||||
auto tryType = static_cast<PieceType>(toupper(symbol));
|
||||
|
||||
switch (tryType) {
|
||||
case PieceType::Pawn:type = PieceType::Pawn;
|
||||
break;
|
||||
case PieceType::Knight:type = PieceType::Knight;
|
||||
break;
|
||||
case PieceType::Bishop:type = PieceType::Bishop;
|
||||
break;
|
||||
case PieceType::Rook:type = PieceType::Rook;
|
||||
break;
|
||||
case PieceType::Queen:type = PieceType::Queen;
|
||||
break;
|
||||
case PieceType::King:type = PieceType::King;
|
||||
break;
|
||||
default:return std::nullopt;
|
||||
auto type = pieceTypeFromSymbol(symbol);
|
||||
if (!type.has_value()) {
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
return Piece(color, type);
|
||||
return Piece(color, type.value());
|
||||
}
|
||||
|
||||
PieceColor Piece::color() const {
|
||||
@@ -37,6 +22,19 @@ PieceColor Piece::color() const {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
bool operator==(const Piece &lhs, const Piece &rhs) {
|
||||
return lhs.color() == lhs.color() && lhs.type() == rhs.type();
|
||||
@@ -55,3 +53,4 @@ std::ostream &operator<<(std::ostream &os, const Piece &piece) {
|
||||
PieceColor operator!(PieceColor color) {
|
||||
return static_cast<PieceColor>((static_cast<int>(color) + 1) % 2);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user