[Move] Implement Move::fromUci
This commit is contained in:
17
Move.cpp
17
Move.cpp
@@ -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;
|
||||
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 {
|
||||
|
Reference in New Issue
Block a user