/* * 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); } }
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; } } }