void Orbs::update(Uint32 ticks) { std::list<Sprite*>::iterator ptr = orbs.begin(); while(ptr!=orbs.end()) { (*ptr)->update(ticks); ptr++; } std::list<Sprite*>::iterator ptrEx = orbsExplode.begin(); while(ptrEx!=orbsExplode.end()) { (*ptrEx)->update(ticks); ptrEx++; } std::list<Sprite*>::iterator ptr1 = orbs1.begin(); while(ptr1!=orbs1.end()) { (*ptr1)->update(ticks); ptr1++; } std::list<Sprite*>::iterator ptrEx1 = orbsExplode1.begin(); while(ptrEx1!=orbsExplode1.end()) { (*ptrEx1)->update(ticks); ptrEx1++; } cullBullets(); for( std::list<Bullet*>::iterator bi = bullets.begin(); bi != bullets.end(); ++bi ) { (*bi)->update( ticks ); //cout << "updateing bullet" << endl; } std::list<Bullet*>::iterator bulletsptrEx = bulletsExp.begin(); while(bulletsptrEx!=bulletsExp.end()) { (*bulletsptrEx)->update(ticks); bulletsptrEx++; } manageCollisions(); }
void Manager::play() { SDL_Event event; if ( clock.isPaused() ) { clock.unpause(); } SDLSound sound; sound.startMusic(); done = false; bool keyCatch = false; randomizeAsteroids(); randomizeOpponents(); while ( not done ) { draw(); SDL_Flip(screen); std::vector<ExplodingSprite*>::iterator expit = explosions.begin(); while (expit != explosions.end()) { int ccount = 0; ccount = (*expit)->chunkCount(); if(ccount == 0){ delete *expit; explosions.erase(expit); } else { ++expit; } } Uint32 ticks = clock.getElapsedTicks(); manageCollisions(); update(ticks); SDL_PollEvent(&event); if (event.type == SDL_QUIT) { break; } if(event.type == SDL_KEYUP) { keyCatch = false; } if(event.type == SDL_KEYDOWN) { switch ( event.key.keysym.sym ) { case SDLK_ESCAPE : if ( clock.isPaused() ) { clock.unpause(); } else { clock.pause(); } done = true; break; case SDLK_q : if ( clock.isPaused() ) { clock.unpause(); } else { clock.pause(); } done = true; break; case SDLK_t : if ( !keyCatch ) { keyCatch = true; currentOrb = (currentOrb+1) % characters.size(); viewport.setObjectToTrack(&characters[currentOrb]); } break; case SDLK_p : { if (!keyCatch) { keyCatch = true; if ( clock.isPaused() ) clock.unpause(); else clock.pause(); } break; } case SDLK_RIGHT : characters[currentOrb].moveRight(); break; case SDLK_LEFT : characters[currentOrb].moveLeft(); break; case SDLK_UP : { characters[currentOrb].moveUp(); } break; case SDLK_DOWN : { characters[currentOrb].moveDown(); } break; case SDLK_SPACE : { if (!keyCatch) { keyCatch = true; characters[currentOrb].shoot(); } } break; case SDLK_F1 : { if (!keyCatch) { keyCatch = true; if ( clock.isPaused() ) { clock.unpause(); helpFlag = false; } else { clock.pause(); helpFlag = true; } } break; } default : break; } } } }