void CGame::GameMain() { int i; CShanaProt* player1; CShanaProt* player2; m_Mode = m_NextMode ; switch( m_Mode ){ case 0: // タイトルのスタート m_ModeTitle = new(m_CommonMode) CModeTitle( this ); SetMode( 2 ); break; case 1: // バトルモードスタート new(m_CommonMode) CModeBattle( this, m_ModeCharaSel->GetDecideChara( 0 ), m_ModeCharaSel->GetDecideChara( 1 )); SetMode( 2 ); break; case 3: // タイトルモードの削除 if( m_ModeTitle != NULL ){ delete m_ModeTitle; m_ModeTitle = NULL; } if( m_ModeCharaSel != NULL ){ delete m_ModeCharaSel; m_ModeCharaSel = NULL; } SetMode( 2 ); break; case 4: // new(m_CommonMode) CModeBattle( this ); SetMode( 2 ); break; case 5: // キャラセレクトのスタート m_ModeCharaSel = new(m_CommonMode) CModeCharaSelect( this ); if( m_ModeTitle != NULL ){ delete m_ModeTitle; m_ModeTitle = NULL; } SetMode( 2 ); break; } m_Input->UpDateState(); CElement* cEle; CElement* cEleNext; // MOVE Main cEle = m_CommonMode->m_ActiveTask->m_Next; while( cEle->m_Next != m_CommonMode->m_ActiveTask->m_Next ){ cEleNext = cEle->m_Next ; if( cEle->Move() == FALSE ){ delete cEle; } else{ cEle->Action(); cEle->ActionFinalize(); cEle->Interfere(); cEle->InterfereFinalize(); } cEle = cEleNext ; } // Begin the scene. LPDIRECT3DDEVICE9 d3ddevice; d3ddevice = m_D3DDraw.GetDevice(); d3ddevice->BeginScene(); // 画面クリア d3ddevice->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0); /* for( i=0 ; i<4 ; i++ ){ if( m_DispObjGroup->m_CDisp[i].m_Visible == TRUE ){ m_D3DDraw.Draw( &m_DispObjGroup->m_CDisp[i] ); } } */ cEle = m_CommonMode->m_ActiveTask->m_Next; while( cEle->m_Next != m_CommonMode->m_ActiveTask->m_Next ){ cEleNext = cEle->m_Next ; cEle->Draw( &m_D3DDraw ); cEle->DrawFinalize(); cEle = cEleNext ; } d3ddevice->EndScene(); // CFps::GetCFps()->WaitNextUpdate(); // 画面に表示(バッファスワップ) d3ddevice->Present( NULL, NULL, NULL, NULL ); }