[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) {
|
Move::Optional Move::fromUci(const std::string &uci) {
|
||||||
(void) uci;
|
if (uci.length() < 4 || uci.length() > 5)
|
||||||
return std::nullopt;
|
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 {
|
Square Move::from() const {
|
||||||
|
Reference in New Issue
Block a user