auto iterOfProjectile = m_projectiles.begin();
// for ( auto iterOfProjectile = m_projectiles.begin(); iterOfProjectile != m_projectiles.end(); ++iterOfProjectile )
while (iterOfProjectile != m_projectiles.end())
{
Projectile *projectile = iterOfProjectile->second;
float x0 = projectile->x0();
float y0 = projectile->y0();
bool doDel = false;
switch ( projectile->direction() ) {
case Projectile::Up:
projectile->setY0( projectile->y0() - step );
doDel = projectile->y0() <= 0.0f;
break;
case Projectile::Left:
projectile->setX0( projectile->x0() - step );
doDel = projectile->x0() < 0.0f;
break;
case Projectile::Down:
projectile->setY0( projectile->y0() + step );
doDel = projectile->y0() >= ( m_canvasHeight - projectile->height() );
break;
case Projectile::Right:
projectile->setX0( projectile->x0() + step );
doDel = projectile->x0() > ( m_canvasWidth - projectile->width() );
break;
}
if (doDel )
{
delete projectile;
m_projectiles.erase( iterOfProjectile++ );
addProjectileExplosion( x0, y0 );
}
else
iterOfProjectile++;
}