示例#1
0
void ExecPrinter::VerbosePrint(IChessExecution* exec){
	allExecs << "==========Exec " << numExecs << "========================\n";
	allExecs << *exec << std::endl;

	//allExecs << "Strategy States \n";
	//for(size_t sid = 0; sid <= exec->NumTransitions(); sid++){
	//	allExecs << "[" << sid << "]" << Chess::GetStrategy()->DebugState(sid) << "\n";
	//}
	allExecs.flush();

	if(false){
		size_t n = 0;
		if(edges.size() == 0){
			edges.push_back(stdext::hash_map<Task, size_t>());
			OnNewNode(n, 0, exec);
		}

		for(size_t i = 0; i<exec->NumTransitions(); i++){
			ChessTransition curr = exec->Transition(i);
			if(edges[n].find(curr.tid) == edges[n].end()){
				size_t s = edges.size();
				edges.push_back(stdext::hash_map<Task, size_t>());
				OnNewNode(s, i+1, exec);
				edges[n][curr.tid] = s;
				OnNewEdge(n,s,i,exec);
			}
			n = edges[n][curr.tid];
		}
		fileStream << n << "->\"ex"<<numExecs << "\";" << std::endl;
		fileStream.flush();
	}
}
示例#2
0
BOOL CRVTrackerDrawPoly::OnUpdate(const CUIEvent &cEvent)
{

	//see if they want to finish drawing the polygon
	if(m_bFinishDrawingPoly)
	{
		// Make sure we don't cancel when the focus goes away
		m_bAllowCancel = FALSE;
		// Create the brush
		m_pView->FinishDrawingPoly();
		m_bAllowCancel = TRUE;

		//we are no longer drawing a poly, so we can start another one
		m_bFinishDrawingPoly = FALSE;

		return FALSE;
	}

	BOOL bCancel = FALSE;

	// Handle any events that happen
	if (m_pUndoTracker)
	{
		BOOL bOldActive = m_pUndoTracker->GetActive();
		m_pUndoTracker->ProcessEvent(cEvent);
		if((bOldActive == FALSE) && m_pUndoTracker->GetActive())
			bCancel = OnUndo();
	}
	if (m_pNewVertexTracker)
	{
		BOOL bOldActive = m_pNewVertexTracker->GetActive();
		m_pNewVertexTracker->ProcessEvent(cEvent);
		if((bOldActive == FALSE) && m_pNewVertexTracker->GetActive())
			bCancel = OnNewVertex();
	}
	if (m_pSplitTracker)
	{
		BOOL bOldActive = m_pSplitTracker->GetActive();
		m_pSplitTracker->ProcessEvent(cEvent);
		if((bOldActive == FALSE) && m_pSplitTracker->GetActive())
			bCancel = OnSplit();
	}
	if (m_pRotateTracker)
	{
		BOOL bOldActive = m_pRotateTracker->GetActive();
		m_pRotateTracker->ProcessEvent(cEvent);
		if((bOldActive == FALSE) && m_pRotateTracker->GetActive())
			bCancel = OnRotate();
	}
	if (m_pInsertEdgeTracker)
	{
		BOOL bOldActive = m_pInsertEdgeTracker->GetActive();
		m_pInsertEdgeTracker->ProcessEvent(cEvent);
		if((bOldActive == FALSE) && m_pInsertEdgeTracker->GetActive())
			bCancel = OnNewEdge();
	}
	if(m_pVertSnapTracker)
	{
		m_pVertSnapTracker->ProcessEvent(cEvent);
		m_bVertSnap = m_pVertSnapTracker->GetActive();
	}
	if(m_pCloseTracker)
	{
		BOOL bOldActive = m_pCloseTracker->GetActive();
		m_pCloseTracker->ProcessEvent(cEvent);
		if((bOldActive == FALSE) && m_pCloseTracker->GetActive())
			bCancel = ClosePoly();
	}

		

	if (bCancel)
		// End the tracker 
		return FALSE;

	// Only update everything else on idle events
	if (cEvent.GetType() != UIEVENT_NONE)
		return TRUE;

	// Don't update if it hasn't moved
	if (m_cCurPt == m_cLastPt)
		return TRUE;

	// Do the autoscroll of the window
	DoAutoScroll();

	switch( m_pView->m_EditState )
	{
		case EDIT_DRAWINGPOLY:
		{
			UpdateDrawPolyVertex(m_cCurPt);
			break;
		}
	}


	// Update the views...
	m_pView->GetDocument()->UpdateAllViews(m_pView);
	m_pView->DrawRect();

	m_cLastPt = m_cCurPt;

	return TRUE;
}