예제 #1
0
/*
 * Create and add multiple enemies specified by xml, ensures enemies
 * arent placed on top of each other. Will probably infinite loop if you 
 * try to put too many enemies in too small an area, need to check that
 */
void CharacterManager::loadXmlEnemy(const string &name){
	Enemy *tmp;
    std::list<Enemy *>::iterator enemy;
    int howMany = Gamedata::getInstance().getXmlInt(name+"Num");

    for(int i = 0; i < howMany; ++i){
        tmp = new Enemy(name);
        tmp->Respawn();
        monsters.push_back(tmp);
    }
}
예제 #2
0
void CharacterManager::respawn(){
    std::list<Enemy *>::iterator enemy;
    for(enemy = dead.begin(); enemy != dead.end(); enemy++){
        Uint32 sinceDeath = Clock::getInstance().getTicks() - (*enemy)->getTimeOfDeath();
        if(sinceDeath/1000 > (*enemy)->getRespawnRate()){
            Enemy *tmp = new Enemy((*enemy)->getName());
            tmp->Respawn();
            monsters.push_back(tmp);
            tmp = *enemy;
            enemy = dead.erase(enemy);
            delete tmp;            
        }
    }
}