/* ================================================ */ 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(); //! 描画等の更新 }
/* ================================================ */ 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(); }