// recorre la lista de disparos, si el disparo se encuentra fuera de la region // dada por r, el disparo se elimina de la lista, sino se mueve void ManejadorDisparos::MoverDisparos(float dt, sf::View &v){ list<Disparo>::iterator p=disparos.begin(); float misilx; sf::FloatRect r=v.GetRect(); while(p!=disparos.end()){ misilx=(*p).GetPosition().x; if(misilx<r.Left || misilx>r.Right){ // al borrar, el iterador p se invalida, por lo que // debemos actualizarlo p=disparos.erase(p); }else{ // movemos el disparo p->Move(p->velx*dt, 0); p++; } } }
// Permite ajustar la capa a la vista para usar scrolling void ParallaxLayer::SetPosition(sf::View &v){ Sprite::SetPosition(offset_x+v.GetRect().Left, offset_y+v.GetRect().Top); }