/** * If a player, enemy, or bullet has less than 1 health, it is frigging DEAD */ void checkDeath() { if(p.getHealth() < 1) { game_running = false; } std::vector<Enemy*>::iterator eIter = enemies.begin(); while(eIter != enemies.end()) { Enemy * eni = *eIter; if(eni->getHealth() < 1) { eIter = enemies.erase(eIter); } else { ++eIter; } } std::vector<Bullet*>::iterator bIter = bullets.begin(); while(bIter != bullets.end()) { Bullet * b = *bIter; if(b->getHealth() < 1) { bIter = bullets.erase(bIter); p.setBullets(bullets); } else { ++bIter; } } // Check to see if a bullet is "off screen, in which case it DIES" bIter = bullets.begin(); while(bIter != bullets.end()) { Bullet * b = *bIter; if(b->getX() < 0 || b->getX() > GAME_WIDTH || b->getY() < 0 || b->getY() > GAME_HEIGHT) { bIter = bullets.erase(bIter); p.setBullets(bullets); } else { ++bIter; } } }
void PsiBlob::update(){ if(m_Health <= 0 && !ContainsFlags(m_UnitStatus,Dead)){ die(); } else if(!ContainsFlags(m_UnitStatus,Dead)){ if(getTarget()){ if(m_Target->getHealth() <= 0){ m_Target = NULL; stop(); } else if(getTarget()->getCurrentTile() != getDestinationTile()){ setDestinationTile(getTarget()->getCurrentTile()); } } moveLerp(); Enemy* enemy; if((enemy = BlobGame::instance()->enemyOnTile(getCurrentTile()))){ enemy->hit(enemy->getHealth()); } updateAbilities(); } }