void CGamePlay::Update(float fElapsedTime) { CSGD_MessageSystem *pMS = CSGD_MessageSystem::GetInstance(); CSGD_ObjectManager *pOM = CSGD_ObjectManager::GetInstance(); CPlayerCharacter *pPC = CPlayerCharacter::GetInstance(); CGame *theGame = CGame::GetInstance(); CSGD_DirectInput *pDI = CSGD_DirectInput::GetInstance(); CSGD_EventSystem *pES = CSGD_EventSystem::GetInstance(); stateTimer -= fElapsedTime; for (int i = 0; i < CHEAT_MAX; ++i) CheckForCheats(i); if (pDI->CheckBufferedKeys() != 0) m_cPreviousKeys.push(pDI->CheckBufferedKeys()); if (stateTimer <= 0) { if (m_nEnemyCounter < 3 && m_nRemainingEnemies > 0 && GetLevel() <= 2) pES->SendEvent("spawn enemies", &fElapsedTime); stateTimer = 6; } if (pDI->GetBufferedKey(DIK_P)) theGame->SetPaused(!theGame->GetPaused()); if (GetLevel() == 3) { if (CGame::GetInstance()->GetPaused() == false) m_nBridgeOffsetY += m_nBridgeVelocityY * fElapsedTime * CGame::GetInstance()->GetSpeed(); if (m_nBridgeOffsetY > 450) { m_nBridgeOffsetY = 449; m_nBridgeVelocityY *= -1; } if (m_nBridgeOffsetY < 64) { m_nBridgeOffsetY = 65; m_nBridgeVelocityY *= -1; } CPlayerCharacter::GetInstance()->SetPosY(m_nBridgeOffsetY - 64); m_fSpawnPowerupTimer -= fElapsedTime; if (m_fSpawnPowerupTimer <= 0) { CSGD_EventSystem::GetInstance()->SendEvent("spawn powerups",NULL); m_fSpawnPowerupTimer = 15.0f; } } vector<CBase*>::iterator iter = enemies.begin(); int i = 0; while(iter != enemies.end()) { // see if we've found the pointer we are looking for int i = 0; if ((*iter)->GetHP() <= 0 && GetLevel() <= 3) { int value = enemies[i]->GetScoreValue(); enemies.erase(iter); SetEnemyCounter(GetEnemyCounter() - 1); SetRemainingEnemies(GetRemainingEnemies() - 1); theGame->SetScore(theGame->GetScore() + value); ++i; break; } else iter++; } if (pPC->GetHP() <= 0) { CGame::GetInstance()->SetLives(CGame::GetInstance()->GetLives() - 1); CGame::GetInstance()->ChangeState( CLevelTransition::GetInstance()); } else if (m_nRemainingEnemies <= 0 && m_nEnemyCounter <= 0 && enemies.empty()) { m_fFinishedTimer -= fElapsedTime; if (m_fFinishedTimer <= 0) { SetLevel(GetLevel() + 1); CTallyMenu::GetInstance()->SetHP(pPC->GetHP()); CGame::GetInstance()->ChangeState( CTallyMenu::GetInstance()); } } if (pDI->GetBufferedKey(DIK_ESCAPE)) CGame::GetInstance()->ChangeState( CMainMenu::GetInstance() ); }