void Adaptor::RequestProcessEventsOnIdle() { // Only request a notification if the Adaptor is actually running // and we haven't installed the idle notification if( ( ! mNotificationOnIdleInstalled ) && ( RUNNING == mState ) ) { mNotificationOnIdleInstalled = AddIdle( MakeCallback( this, &Adaptor::ProcessCoreEventsFromIdle ) ); } }
void Adaptor::RequestProcessEventsOnIdle() { // Only request a notification if the Adaptor is actually running if ( RUNNING == mState ) { boost::unique_lock<boost::mutex> lock( mIdleInstaller ); // check if the idle handle is already installed if( mNotificationOnIdleInstalled ) { return; } mNotificationOnIdleInstalled = AddIdle( boost::bind( &Adaptor::ProcessCoreEventsFromIdle, this ) ); } }
void TradeActor::GetNextAction(void) { if (m_curAction) { delete m_curAction; m_curAction = NULL; } if (m_actionQueue.GetNumItems() > 0) { m_actionQueue.Dequeue(m_curAction); if (m_curAction) { m_curGoodAction = (GOODACTION)m_curAction->GetActionType(); } else { Assert(FALSE); } } else { AddIdle(); } }
void WorkerActor::GetNextAction(void) { delete m_curAction; m_curAction = NULL; if (m_actionQueue.GetNumItems() > 0) { m_actionQueue.Dequeue(m_curAction); if (m_curAction) { m_curUnitAction = (UNITACTION) m_curAction->GetActionType(); } else { Assert(FALSE); } } else { AddIdle(); } }
TradeActor::TradeActor(TradeRoute newRoute) { GROUPTYPE type; m_curAction = NULL; m_animPos = 0; m_routeID = newRoute; m_routePath = m_routeID.GetPath(); m_routeID.GetSourceResource(m_routeType, m_routeResource); m_sourcePosID = 0; m_currentPosID = m_sourcePosID+1; m_destPosID = m_routePath->Num()-1; type = GROUPTYPE_GOOD; Assert(g_goodSpriteGroupList); sint32 index = g_theResourceDB->Get(m_routeResource)->GetSpriteID(); m_goodSpriteGroup = (GoodSpriteGroup *)g_goodSpriteGroupList->GetSprite(index, type, LOADTYPE_BASIC,(GAME_ACTION)0); m_currentPos = m_sourcePos = m_routePath->Get(m_currentPosID); m_destPos = m_routePath->Get(m_destPosID); m_x = 0; m_y = 0; m_facing = 0; m_frame = 0; AddIdle(); m_actionQueue.Allocate(k_MAX_ACTION_QUEUE_SIZE); }
WorkerActor::WorkerActor(sint32 index, const MapPoint &pos, sint32 x, sint32 y) : Actor (), m_facing (0), m_frame (0), m_transparency (TRANSPARENCY_DEFAULT), m_index (index), m_pos (pos), m_unitSpriteGroup (NULL), m_curAction (NULL), m_curUnitAction (), m_actionQueue (k_MAX_ACTION_QUEUE_SIZE) { SetPos(x, y); Assert(g_unitSpriteGroupList); if (g_unitSpriteGroupList) { m_unitSpriteGroup = (UnitSpriteGroup *) g_unitSpriteGroupList->GetSprite(index, GROUPTYPE_UNIT, LOADTYPE_FULL,(GAME_ACTION)0); } AddIdle(); }
void Application::Quit() { // Actually quit the application. AddIdle( MakeCallback( this, &Application::QuitFromMainLoop ) ); }