示例#1
0
void Kaboodle::Player::tickerTimeout(void)
{
	if(engine->state() == Stop)
	{
		if ( uncompleted )
		{
			stop();
			if( isLooping() )
			{
				play();
			}
			else
			{
				uncompleted = false;
				emit completed();
			}
		}
		if(embedded)
		{
			widget->embed(Arts::PlayObject::null());
			embedded = false;
		}
	}
	else if(engine->state() != Stop && engine->state() != Empty)
	{
		if(!embedded)
		{
			widget->embed(engine->playObject());
			embedded = true;
		}
		
		emit timeout();

		if(extension)
			emit setStatusBarText(i18n("Playing %1 - %2")
			                      .arg(current.prettyURL())
			                      .arg(positionString() + "/" + lengthString()));

	}
	updateTitle();
}
示例#2
0
void UciEngine::makeMove(const Chess::Move& move)
{
	if (!m_ponderMove.isNull())
	{
		if (move == m_ponderMove)
			m_ponderState = PonderHit;

		m_ponderMove = Chess::Move();
		if (m_ponderState != PonderHit)
		{
			m_moveStrings.truncate(m_moveStrings.lastIndexOf(' '));
			if (isReady())
			{
				m_ignoreThinking = true;
				if (stopThinking())
					ping(false);
			}
			else
			{
				// Cancel sending the "go ponder" message
				clearWriteBuffer();
				m_rePing = true;
			}
		}
	}

	if (m_ponderState != PonderHit)
	{
		m_ponderState = NotPondering;
		m_moveStrings += " " + board()->moveString(move, Chess::Board::LongAlgebraic);
		if (m_ignoreThinking)
			m_bmBuffer << positionString() << "isready";
		else
			sendPosition();
	}
}
示例#3
0
void UciEngine::sendPosition()
{
	write(positionString());
}