예제 #1
0
void TaskManagerBase::DrawUpdate()
{
	for(uint32_t i = 0; i < m_vTaskUnit.size(); ++i){
		TaskUnit *pTask = m_vTaskUnit.at(i);
		if(pTask->GetStatus() == TaskUnit::TASK_ALIVE){
			pTask->DrawUpdate();
		}
	}
}
예제 #2
0
/* ================================================ */
void TaskManagerBase::DeleteDieUnit()
{
	std::vector<TaskUnit*>::iterator it = m_vTaskUnit.begin();
	while(it != m_vTaskUnit.end()){
		TaskUnit *task = *it;
		if(task->GetStatus() == TaskUnit::TASK_DIE){
			it = m_vTaskUnit.erase(it);
			SAFE_DELETE(task);
			continue;
		}
		if(it != m_vTaskUnit.end()){
			++it;
		}
	}
}
예제 #3
0
/* ================================================ */
void FlowBase::ChildUpdate()
{
	if( Utility::IsGamePause() ){
		// ポーズ中
	}
	else if( m_vStageEffect.size() != 0
		&& FadeManager::GetInstance()->GetCurrentState() == FadeManager::STATE_IDLE ){
		// フロー演出中
		auto it = m_vStageEffect.begin();
		if( (*it)->IsEffectEnd() ){
			ProcessBase *tmp = *it;
			m_vStageEffect.erase( it );
			SAFE_DELETE(tmp);

			if( m_vStageEffect.size() == 0 ){
				// フィルター終了
				Utility::EndGameStop();
			}
		}
		else{
			(*it)->Exec();
			// フィルターを表示し続ける
			Utility::StartGameStop( /*bool withFilter=*/(*it)->IsNeedPauseFilter() );
		}

		// Effectクラスが作られたときにInitだけは処理しないと描画されないのでここで処理
		for(uint32_t i = 0; i < m_vTaskUnit.size(); ++i){
			TaskUnit *pTask = m_vTaskUnit.at(i);
			if( pTask->GetStatus() == TaskUnit::TASK_INIT ){
				if(pTask->Init()){
					pTask->SetStatus(TaskUnit::TASK_ALIVE);
				}
			}
		}
	}
	else{
		Exec();				//! 位置等の更新
		CollisionManager::GetInstance()->CollisionUpdate();			// 衝突判定更新+各クラスにイベント発行	
		SystemMessageManager::GetInstance()->StartMessageEvent();	// 各クラスの相互イベント処理を行う
	}
	DrawUpdate();		//! 描画等の更新
}
예제 #4
0
/* ================================================ */
void TaskManagerBase::Exec()
{
	for(uint32_t i = 0; i < m_vTaskUnit.size(); ++i){
		TaskUnit *pTask = m_vTaskUnit.at(i);
		switch(pTask->GetStatus()){
		default:
			DEBUG_ASSERT( 0, "/_/_/task status が想定外/_/_/");
			break;

		case TaskUnit::TASK_IDLE:
			//! 何もしない
			break;

		case TaskUnit::TASK_INIT:
			if(pTask->Init()){
				pTask->SetStatus(TaskUnit::TASK_ALIVE);
			}
			break;

		case TaskUnit::TASK_ALIVE:
			pTask->Update();
			break;

		case TaskUnit::TASK_PRE_DIE:
			if(pTask->DieMain()){
				pTask->SetStatus(TaskUnit::TASK_DIE);
			}
			break;

		case TaskUnit::TASK_DIE:
			DEBUG_ASSERT( 0, "/_/_/ここに来るのはおかしい/_/_/");
			break;
		}
	}

	//! 状態がTASK_PRE_DIEになったタスクを解放する
	DeleteDieUnit();
}