ZombieManager::~ZombieManager(void) { Camera::sharedCameraInstance()->remove(this); //zrm.release(); list<Zombie*>::iterator it; for(it=zombies.begin(); it!=zombies.end(); it++) deadZombies.push_back(*it); for(it = deadZombies.begin();it != deadZombies.end(); it++) deleteZombie(*it); zombies.clear(); deadZombies.clear(); if(hugeZombie) { deleteZombie(hugeZombie); SoundManager::getInstance()->stopEffect(hugeZombieSoundId); } }
//movement of zombies to follow player void Zombie::move(){ if((x()<player1->x()) && (y()<player1->y())){ zombieCollision(); setPos(x()+.7, y() + .7); zombieCollision(); collision(); deleteZombie(); direct=1; } if((x()>player1->x()) && (y()<player1->y())){ zombieCollision(); setPos(x()-.7,y()+.7); zombieCollision(); collision(); deleteZombie(); direct=2; } if((x()<player1->x()) && (y()>player1->y())){ zombieCollision(); setPos(x()+.7, y() -.7); zombieCollision(); collision(); deleteZombie(); direct=3; } if((x()>player1->x()) && (y()>player1->y())){ zombieCollision(); setPos(x()-.7,y()-.7); zombieCollision(); collision(); deleteZombie(); direct=4; } }
void AllZombies::killDead(Zombie* z) { int row; // qDebug()<<"come to AllZombies::killDead first line"; row = z->pos().y()/GRID_Y; QLinkedList<Zombie *>::iterator it = qFind(zombieList[row].begin(), zombieList[row].end(), z); // qDebug()<<"come to AllZombies::killDead"; emit deleteZombie(z); if (it != zombieList[row].end()) zombieList[row].erase(it); // qDebug()<<zombieList[row].size(); // qDebug()<<"come to AllZombies::killDead after delete"; z->deleteLater(); }
void ZombieManager::update(float dt,b2Vec2 pv) { //long currentTime = GetTickCount(); unsigned long currentTime = Timer::getCurrentTime(); updateEnerge(dt); list<Zombie*>::iterator it; for(it=zombies.begin(); it!=zombies.end(); it++) { Zombie* z= *it; z->update(dt,pv); //z->directionUpdate(); if(z->currentState == Zombie::dead || z->getPositionWithCocos().x < 0) { deadZombies.push_back(z); } } if(hugeZombie) { hugeZombie->update(dt,pv); } for(it=deadZombies.begin(); it!=deadZombies.end(); it++) { Zombie* dz = *it; deleteZombie(dz); } deadZombies.clear(); }