void CrazyhouseBoard::vUndoMove(const Move& move) { int source = move.sourceSquare(); int target = move.targetSquare(); int prom = move.promotion(); Move tmp(move); if (source != 0 && prom != Piece::NoPiece) tmp = Move(source, target, promotedPieceType(prom)); WesternBoard::vUndoMove(tmp); int ctype = captureType(move); if (ctype != Piece::NoPiece) removeFromReserve(Piece(sideToMove(), reserveType(ctype))); else if (source == 0) addToReserve(Piece(sideToMove(), prom)); }
void CrazyhouseBoard::vMakeMove(const Move& move, BoardTransition* transition) { int source = move.sourceSquare(); int target = move.targetSquare(); int prom = move.promotion(); Move tmp(move); if (source != 0 && prom != Piece::NoPiece) tmp = Move(source, target, promotedPieceType(prom)); int ctype = captureType(move); if (ctype != Piece::NoPiece) { Piece reservePiece(sideToMove(), reserveType(ctype)); addToReserve(reservePiece); if (transition != 0) transition->addReservePiece(reservePiece); } else if (source == 0) removeFromReserve(Piece(sideToMove(), prom)); return WesternBoard::vMakeMove(tmp, transition); }
void RoombotModule::setPosition(Position position) { removeFromReserve(); _translation->setSFVec3f(position.getTransaltion()); rotation->setSFRotation(position.getRotation()); }