[Move] Implement Move::fromUci

This commit is contained in:
2022-12-18 21:01:48 +01:00
parent 428bf21c23
commit 864b46be9e

View File

@@ -7,8 +7,23 @@ Move::Move(const Square &from, const Square &to, const std::optional<PieceType>
}
Move::Optional Move::fromUci(const std::string &uci) {
(void) uci;
return std::nullopt;
if (uci.length() < 4 || uci.length() > 5)
return std::nullopt;
std::optional<PieceType> promotion = std::nullopt;
if (uci.length() == 5) {
promotion = Piece::pieceTypeFromSymbol(uci[4]);
if (!promotion.has_value()) {
return std::nullopt;
}
}
auto from = Square::fromName(uci.substr(0, 2));
auto to = Square::fromName(uci.substr(2, 2));
if (!from.has_value() || !to.has_value())
return std::nullopt;
return Move(from.value(), to.value(), promotion);
}
Square Move::from() const {