Exemple #1
0
/**
 * 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;
        }
    }
}
Exemple #2
0
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();
	}
}