void ChessGame::setMoves(const PgnGame& pgn) { Q_ASSERT(pgn.variant() == m_board->variant()); setStartingFen(pgn.startingFenString()); resetBoard(); m_moves.clear(); foreach (const PgnGame::MoveData& md, pgn.moves()) { Chess::Move move(m_board->moveFromGenericMove(md.move)); Q_ASSERT(m_board->isLegalMove(move)); m_board->makeMove(move); if (!m_board->result().isNone()) return; m_moves.append(move); } }
bool ChessGame::setMoves(const PgnGame& pgn) { setStartingFen(pgn.startingFenString()); if (!resetBoard()) return false; m_scores.clear(); m_moves.clear(); foreach (const PgnGame::MoveData& md, pgn.moves()) { Chess::Move move(m_board->moveFromGenericMove(md.move)); if (!m_board->isLegalMove(move)) return false; m_board->makeMove(move); if (!m_board->result().isNone()) return true; m_moves.append(move); } return true; }