Example #1
0
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));
}
Example #2
0
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());
}