예제 #1
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();
}